出神入化----- 23种设计模式的晋阶
文章平均质量分 77
rjx20001
这个作者很懒,什么都没留下…
展开
-
访问者模式进阶(一)
做了标题党=。=这一篇并没有介绍关于访问者模式的进阶,先说一下访问者模式的使用情况,这里引用大话设计模式的例子,因为讲得比较精辟。 假设有男人和女人两种元素,要分别打印出他们在不同状态时的不同表现。 用OO的思想把表现(行为)提取出来作为一个抽象方法,代码如下: [color=darkred][size=large]用if-else对状态进行判断[/size][/color...原创 2009-02-27 12:52:19 · 123 阅读 · 0 评论 -
访问者模式进阶(二)
这一篇讲述如何让访问者模式(Visitor)变得更加灵活。但并非结合反射(Reflection)去解决问题,而是采用另外一种的思维方式去改造访问者模式,相对于反射,我更偏向于这种。至于用反射改造访问者模式将会在下一篇讨论。 用回上一篇文章的例子,男人女人。假设现在需求要扩展数据结构,增加一种具体元素,男与女之外的一种不明物体,我们暂时把它称为“怪兽”,在既有访...原创 2009-02-27 16:18:45 · 92 阅读 · 0 评论 -
模板方法模式的升级
关于模板方法的定义:[b]定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。[/b] 模板方法的类图比较简单,这里就不画出来了。有需要的可以上网Google一下。我们直接看例子。 现在需求要实现学生A与学生B做同一份试卷。 [color=darkred][size=large]大量Ct...原创 2009-02-27 18:46:46 · 121 阅读 · 0 评论 -
不容易掌握的单例模式
众所周知单例模式有有饿汉式与懒汉式两种。当一个单例类的初始化开销很大,而希望当用户实际上需要的时候才去创建单例类,就会考虑使用懒汉式[b]延迟初始化[/b],来提高程序的启动速度。但懒汉式并不容易使用。 在多线程的环境下,如果不同步getInstance()方法会出现线程安全的问题,如果同步整个方法,那么getInstance()就完全变成串行,串行效率会降低10倍甚至100倍。因...原创 2009-03-03 19:12:09 · 83 阅读 · 0 评论 -
访问者模式进阶(三)
这一篇讲述一下如何用反射改造访问者模式,使之在增加具体元素的时候也符合“开放-封闭”原则(OCP)。为了理解的连贯性继续采用之前的男人-女人的例子。 这是既定访问者的类图: [img]/upload/attachment/82158/295619f7-3716-3de5-8338-be56c17935ef.jpg[/img] 在(二)在介绍过,既定访问者模式增加具体元...原创 2009-03-07 23:29:00 · 93 阅读 · 0 评论 -
访问者模式进阶(四)
经过思考后,发现上一篇介绍的用反射改造访问者模式中,抽象访问者与具体访问者之间的继承关系有不妥的地方。 1)抽象访问者与具体访问者的之间的继承并没有必然的关系 2)用抽象类代替接口并不是一种好办法,毕竟Java不支持多重继承 3)ReflectionVisitor更像是一个具体类,《Java与模式》里面说“只有在分类学的角度上有意义时,才使用继承,不要从工具类继承” ...原创 2009-03-08 12:34:42 · 132 阅读 · 0 评论 -
设计模式序章
看设计模式总会有一种着迷的感觉,用小林同学的话,“实在太精彩了!”于是又想写下一些东西和大家分享:) 书看过几本,第一本是看小林同学推荐的大话设计模式,用C#写的,印象也最深刻,一开始看设计模式我觉得这本是很合适的。所谓设计模式其实就是对一种经常发生的问题提出的一种解决方案,而且这种方案经常无数人的测试,使用,在经过千锤百炼之后4人组的设计模式几乎是无懈可击。然而...原创 2009-02-24 12:19:03 · 120 阅读 · 0 评论