JAVA设计模式初探(三)
所有代码均编写调试正确, Uml 图关系正确,参考自清华大学出版社的《 Java 设计模式》
16. 装饰模式:
动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。
使用场景:
1.程序希望动态地增强类的某个对象的功能,而又不影响到该类的其他对象。
2.采用继承来增强对象功能不利于系统的扩展和维护。
装饰模式实例网址: http://skhero2012.iteye.com/blog/1489823
17. 状态模式:
允许一个对象在内部状态改变时改变它的行为,对象看起来似乎修改它的类。
使用场景:
1.一个对象的行为依赖于它的状态,并且它必须在运行时根据状态改变它的行为。
2.需要编写大量的条件分支语句来决定一个操作行为,而且这些条件恰好表示对象的一种状态。
状态模式实例网址: http://skhero2012.iteye.com/blog/1489992
18. 组合模式:
将对象组合成树形结构以表示 “ 部分 - 整体 ” 的层次结构。 Composite 使用户对单个对象和组合对象的使用具有一致性。
使用场景:
1.当想表示对象的部分-整体层次结构。
2.希望用户用一致的方式处理个体对象和组合对象。
组合模式实例网址: (暂未更新)
19. 代理模式:
为其他对象提供一种代理以控制对这个对象的访问。
使用场景:
1.程序可能不希望用户直接访问对象,而是提供一个特殊的对象以控制对当前对象的访问。
2.如果一个对象需要很长时间才能加载完成。
3.如果对象位于远程主机上,需要为用户提供访问该远程对象的能力。
代理模式实例网址: (暂未更新)
20. 享元模式:
运用共享技术有效地支持大量细粒度对象。
使用场景:
1.一个应用程序使用大量的对象,这些对象之间部分属性本质上是相同的,这时应使用享元来封装相同的部分。
2.对象的多数状态都可以变为外部状态,就可以考虑将这样对象作为系统中的享元来使用。
享元模式实例网址: (暂未更新)
21. 访问者模式:
表示一个作用于某对象结构中的各个元素的操作。它可以在不改变各个元素的类的前提下定义作用于这些元素的新操作。
1.一个对象结构中,比如某个集合中,包含很多对象,想对集合中的对象增加一些新的操作。。
2.需要对集合中的对象进行不同的并且不相关的操作,而又不想修改对象的类,就可以使用访问者模式。
访问者模式实例网址: (暂未更新)
22. 备忘录模式:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。
1.必须保存一个对象在某一时刻的全部或部分状态,以便在需要时恢复该对象先前的状态。
2.需要对集合中的对象进行不同的并且不相关的操作,而又不想修改对象的类,就可以使用访问者模式。
备忘录模式实例网址: (暂未更新)
23. 解释器模式:
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
1.当有一个简单语言需要解释执行,并且可以将该语言的每一个规则表示为一个类时,就可以使用解释器模式。
解释器模式实例网址: (暂未更新)