宁波企业建站系统,云主机服务器,网页设计师职责,wordpress 显示微信二维码专栏#xff1a;《Java面向对象程序设计》学习笔记
第 8 章 设计模式
一个好的设计系统往往是易维护、易扩展、易复用的。
8.1 设计模式简介
8.1.1 什么是设计模式
一个设计模式 (pattern) 是针对某一类问题的最佳解决方案#xff0c;而且己经被成功应用于许多系统的设…专栏《Java面向对象程序设计》学习笔记
第 8 章 设计模式
一个好的设计系统往往是易维护、易扩展、易复用的。
8.1 设计模式简介
8.1.1 什么是设计模式
一个设计模式 (pattern) 是针对某一类问题的最佳解决方案而且己经被成功应用于许多系统的设计中。
即一个设计模式是从许多优秀的软件系统中总结出的成功的可复用的设计方案。
8.1.3 什么是框架
框架不是设计模式框架是针对某个领域提供用于开发应用系统的类的集合。
8.2 策略模式
策略模式定义一系列算法把它们一个个封装起来并且使它们可相互替换。
本模式使得算法可独立于使用它的客户而变化。
8.2.1 策略模式的结构 策略 (Strategy) 策略是一个接口该接口定义若干个算法标识即定义了若干个抽象方法。 上下文 (Context) 上下文是依赖于策略接口的类是面向策略设计的类。 具体策略ConcreteStrategy具体策略是实现策略接口的类。
8.2.3 策略模式的优点 上下文 context 和具体策略 ConcreteStrategy 是松耦合关系。 策略模式满足“开-闭”原则当增加新的具体策略时不需要修改上下文类的代码上下文就可以引用新的具体策略的实例。
8.2.4 适合使用策略模式的情景 一个类定义了多种行为并且这些行为在这个类的方法中以多个条件语句的形式出现那么可以使用策略模式避免在类中使用大量的条件语句。 程序的主要类相当于上下文角色不希望暴露复杂的、与算法相关的数据结构那么可以使用策略模式封装算法即将算法分别封装到具体策略中。 需要使用一个算法的不同变体。
8.3 访问者模式
表示一个作用于某对象结构中的各个元素的操作。
它使得用户可以在不改变各个元素的类的前提下定义作用于这些元素的新操作。
8.3.2 访问者模式的使用
可以将这些类看作是一个小框架用户就可以使用这个小框架中的类编写应用程序了。
8.3.3 双重分派
访问者模式使用了一种称为“双重分派”的技术在访问者模式中 被访问者 即EIement 元素角色element 首先调用 accept (Visitor visitor 方法接收访问者 被接收的访问者 visitor 再调用 visit(EIement element) 方法访问当前 element 对象。
“双重分派”技术中的核心是将数据的存储和操作解除耦合。
8.3.4 访问者模式的优点 1 在不改变一个集合中的元素的类的情况下增加新的施加于该元素上的新操作。 2 可以将集合中各元素的某些操作集中到访问者中不仅便于集合的维护也有利于集合中元素的复用。
8.3.5 适合使用访问者模式的情景 1 在一个对象结构中例如某个集合中包含很多对象想对集合中的对象增加一些新的操作。 2 需要对集合中的对象进行很多不同的并且不相关的操作而我们又不想修改对象的类此时就可以使用访问者模式。访问者模式可以在 Visitor 类中集中定义一些关于集合中对象的操作。
8.4 装饰模式
装饰模式动态地给对象添加一些額外的职责。就功能来说装饰模式相比生成子类更为灵活。
装饰模式是动态地扩展一个对象的功能而不需要改变原始类代码的一种成熟模式。
8.4.2 装饰模式的使用
使用模式给出了可以使用的类可以将这些类看作是一个小框架用户就可以使用这个小框架中的类编写应用程序。
8.4.4 装饰模式相对继承机制的优势
减少子类数目有利于系统的维护。
8.4.5 装饰模式的优点 被装饰者和装饰者是松耦合关系。 由于装饰 (Decorator) 仅仅依赖于抽象组件 Component 因此具体装饰只知道它要装饰的对象是抽象组件的某一个子类的实例但不需要知道是哪一个具体子类。 装饰模式满足“开一闭原则”不必修改具体组件就可以增加新的针对该具体组件的具体装饰。
8.4.6 适合使用装饰模式的情景 1 程序希望动态地增强类的某个对象的功能而又不影响该类的其他对象。 2 采用继承来增强对象功能不利于系统的扩展和维护。
8.5 适配器模式
8.6 工厂方法模式
8.7 责任链模式
8.8 小结