摘要: 备忘录模式,翻译成标记模式好一些,因为这种设计模式的目的是为了反悔:GOF给备忘录模式的定义为:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 在之前的命令模式中,我们曾经提到利用中间的命令角色可以实现undo、redo ... 阅读全文
posted @ 2014-12-09 16:43 Simba.Chen 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 模板方法模式是一个非常简单的模式,因为它只使用到了继承关系。模板方法(Template Method)模式:定义一个操作中的算法的骨架,而将一些步骤延续到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。来看下这个简单模式的结构吧:1) 抽象类(Abstract Class):... 阅读全文
posted @ 2014-12-09 11:16 Simba.Chen 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 状态模式是策略模式的孪生兄妹,也属于行为型设计模式,GOF《设计模式》中给状态模式下的定义为:允许一个对象在其内部状态改变时改变它的行为。这有点像策略模式根本不同环境使用不同的行为(策略),状态模式只是这种环境是对象内部的状态集合。 能够让程序根据不同的外部情况来做出不同的响应,最直接的方法就... 阅读全文
posted @ 2014-12-09 11:09 Simba.Chen 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 我们无时无刻不在时刻得调整自己的计划(策略)以完成目标,就跟玩dota一样,对局面的判断不同使得装备选择不同,阵容不同也使得自己的打法不一样,调整策略时刻都在发生。这些情况在实际系统中也是经常遇到,那么在软件系统中如何实现不同的策略呢? 策略模式是一种行为型设计模式,主要是定义一系列的算法,把... 阅读全文
posted @ 2014-12-09 10:20 Simba.Chen 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 迭代这个名词对于熟悉 Java 的人来说绝对不陌生。我们常常使用JDK 提供的迭代接口进行java collection 的遍历:1 Iterator it = list.iterator();2 while(it.hasNext()){3 //using “it.next();... 阅读全文
posted @ 2014-12-05 11:15 Simba.Chen 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 解释器模式和调停者模式都是行为型模式,由于二者用的情形比较少,不作过多解读,介绍一下相关概念,以作参考。 解释器模式有点儿“编译器”的概念,像个超级简单的编译器,且跟硬件无关,它的目的是定义语言(使用规定格式和语法的代码)的文法,然后建立一个解释器来解释该语言中的句子。 在 GOF 的书中指... 阅读全文
posted @ 2014-12-05 10:50 Simba.Chen 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 介绍命令模式之前,来看看Window的界面设计,同样的菜单控件,在不同的应用环境中的功能是完全不同的;而菜单选项的某个功能可能和鼠标右键的某个功能完全一致。按照最差、最原始的设计,这些不同功能的菜单、或者右键弹出菜单是要分开来实现的,你可以想象一下,word 文档上面的一排菜单要实现出多少个“形... 阅读全文
posted @ 2014-12-03 12:14 Simba.Chen 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 责任链模式听上去不太好理解,但是其实是非常简单的一种行为型设计模式。举个类比就知道它的定义了,说一个病人看牙的时候,医生不小心把拔下的一个牙掉进了病人嗓子里。各个科室的医生推卸责任,搞得病人因此楼上楼下的跑了不少冤枉路,最后无果而终。 责任链模式就是这种“推卸”责任的模式,你的问题在我这里能解... 阅读全文
posted @ 2014-12-03 10:11 Simba.Chen 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 代理,一般人都知道是什么意思,代理是一种行为,在客户不想或不能直接操作时,把操作交付给代理来处理,代理模式亦是如此,代理模式是一种典型的行为型设计模式,想完成的行为引出了代理模式,其实现方法倒是不拘泥。 代理模式定义为:为其他对象提供一种代理以控制对这个对象的访问。简单的说就是,不直接引用一个... 阅读全文
posted @ 2014-12-03 09:40 Simba.Chen 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 介绍享元模式之前,来聊聊Java中的String类型特性:String类型的 1、对象一旦被创造就不可改变; 2、当两个String对象所包含的内容相同的时候,JVM只会创建一个String对象对应着两个不同的对象引用。 验证一下2的特性1 public class TestPattern... 阅读全文
posted @ 2014-12-02 19:25 Simba.Chen 阅读(422) 评论(0) 推荐(0) 编辑