JAVA设计模式初探(二)
所有代码均编写调试正确, Uml 图关系正确,参考自清华大学出版社的《 Java 设计模式》
9 .桥接模式:
将抽象部分与它的实现部分分离,使它们都可以独立地变化
使用场景:
1.不想让抽象和某些重要的实现代码是固定绑定关系,这部分实现可运行时状态。
2.抽象和实现者都可以继承的方式独立地扩充而互不影响,程序在运行期间可能需要动态的将一个抽象的子类的实例与一个实现者的子类的实例进行组合。
3.希望对实现者层次代码的修改对抽象层不产生影响,即抽象层的代码不必重新编译,反之依然。
桥接模式实例网址: http://skhero2012.iteye.com/blog/1488467
10. 生成器模式:
将一个复杂的对象的构建与它的表现分离,使同样的构建过程可以创建不同的表示。
使用场景:
1. 当系统准备为用户提供一个内部结构复杂的对象,而且在构造方法中编写创建该对象的代码无法满足用户需求时,就可以使用生成器模式来构造这样的对象
2. 当某些系统要求对象的构造过程必须独立于创建该对象的类时。
生成器模式实例网址: http://skhero2012.iteye.com/blog/1489808
11. 适配器模式:
将一个类的接口转换成客户希望的另一个接口。 Adapter 模式使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作。
适配器模式的优点:
1. 目标( Target )和被适配者( Adaptee )是完全解耦的关系。
2. 适配器模式满足开 - 闭原则,当添加一个实现 Adaptee 接口的新类时,不必修改 Adapter , 3.Adapter 就能对这个新类的实例进行适配。
适配器模式实例网址:(暂未更新)
12. 外观模式:
系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
适用场景:
1. 对于一个复杂的子系统,需要为用户提供一个简单的交互操作。
2. 不希望客户代码和子系统中的类耦合,以便提高子系统的独立性和可移植性。
3. 当两个系统需要构建一个层次结构的子系统,不希望这些子系统相互直接交互。
外观模式实例网址: http://skhero2012.iteye.com/blog/1489986
13. 原型模式:
用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。
使用场景:
1. 程序需要从一个对象出发,得到若干个和其状态相同,并可独立变化其状态的对象时。
2. 当对象创建需要独立于它的构造过程和表示时。
3.一个类创建实例状态不是很多,那么就可以将这个类的一个实例定义为原型,那么通过复制原型得到新的实例可能比重新使用类的构造方法创建新实例更方便。
原型模式实例网址: http://skhero2012.iteye.com/blog/1489989
14. 责任链模式:
使用多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
使用场景 :
1. 有许多对象可以处理用户的请求,希望程序在运行期间自动确定用户的那个对象。
2. 希望用户不必明确指定接受者的情况下,向多个接受者的一个提交请求。
3. 程序希望动态制定可处理用户请求的对象集合。
责任链模式实例网址: (暂未更新)
15. 中介者模式:
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
适合中介者模式的场景:
1. 许多对象以复杂的方式交互,所导致的依赖关系使系统难以理解和维护。
2. 一个对象引用其他很多对象,导致难以复用该对象。
中介者模式实例网址: http://skhero2012.iteye.com/blog/1489991