一.构造模式:
1.Adapter Pattern适配器模式:
意图:将类的接口转换为客户端期望的另一个接口。
—— 解决类之间接口不兼容的问题;
——为已有的类提供新的接口;
目标:对旧的不兼容组件进行包装,在新系统中使用旧的组件。
适配器模式结构图:
·Adaptee是现有的类。
·Target是在现有库中定义的接口。
·Adapter是创建的类,它是从适配器类继承的,它实现了Target接口。注意,它可以调用SpecificRequest方法(从适应性继承)在它的请求方法中(由Target实现)。
2.Decorator pattern装饰模式:
问题: 需要对对象进行任意或者动态的扩展组合。
方案: 实现一个通用接口作为要扩展的对象,将主要功能委托给基础对象 (stack),然后添加功能(undo,secure,…)。应注意装饰边框与被装饰物的一致性。
接口:定义装饰物执行的公共操作。
起始对象,在其基础上增加功能(装饰),将通用的方法放到此对象中。
装饰模式结构图:
Decorator抽象类是所有装饰类的基类,里面包含的成员变量。
component 指向了被装饰的对象。
二.行为模式
1.Strategy Pattern策略模式:
问题: 针对特定任务存在多种算法,调用者需要根据上下文环境动态的选择和切换。
解决:定义一个算法的接口,每个算法用一个类来实现,客户端针对接口编写程序。
策略模式结构图:
·Strategy是算法几种不同实现的统一接口;
·ConcreteStategyA/B/C是AlgorithmInterface()的三种不同实现;
·Context客户端可选择Strategy接口的任意一种实现。
2.Template Method pattern模板方法模式:
问题:不同的客户端具有相同的算法步骤 ,但是每个步骤的具体实现不同.
解决:在父类中定义通用逻辑和各步骤的抽象方法声明,子类中进行各步骤的具体实现。
样板方法模式结构图:
·模板法模式适用性:
——在父类声明一个通用逻辑
——模板模式用继承+重写的方式实现算法的 不同部分.策略模式用委托机制实现不同完整算法 的调用(接口+多态)
——框架实现了算法的不变性,客户端提供每步的具体实现。
3.Iterator Pattern迭代器模式:
问题:客户端需要以统 一的,与元素类型无关的方式访问容器中的所有元素;
解决方案:一种迭代策略模式。
重要性:隐藏了容器的内部实现,用统一的接口 支持多种遍历策略。
迭代器模式结构图:
·Aggregate interface: 获取迭代器对象的接口;
·ConcreteAggregate class:实现迭代器对象的获取;