| 模式 | 意图 | 应用变化 |
|---|---|---|
| 装饰者模式 | 包装另一个对象,并提供额外的行为 | 让新行为加入类中而无须修改现有代码 |
| 适配器模式 | 包装另一个对象,并提供不同的接口 | 允许客户使用新的库和子集合,无须改变接口代码,由适配器将变化封装起来 |
| 外观模式 | 包装许多对象,以简化他们的接口。 | |
| 代理模式 | 包装另一个对象,并提供对它的访问 |
| 模式 | 意图 | 做法 |
|---|---|---|
| 状态模式 | 封装基于状态的行为,并将行为委托给当前状态 | Context会随着时间而改变状态,而任何的状态改变都是定义好的 |
| 策略模式 | 将可以互换的行为封装起来,然后使用委托的方法,决定使用哪一个行为 | 控制Context使用什么策略,没有一组定义良好的状态转换。 |
| 模式 | 意图 | 做法 |
|---|---|---|
| 模板方法模式 | 定义一个算法的大纲,由子类决定如何实现算法中的某些步骤。算法的个别步骤可以有不同的实现细节,但算法的接口依然维持不变。 | 使用继承进行算法的实现 |
| 策略模式 | 定义一个算法家族,并让这些算法法可以互换 | 1. 使用组合的方式,让客户可以选择算法实现。2. 所组合的类实现了整个算法。 |
| 工厂方法模式 | 由子类决定实例化哪个具体类 | 是模板方法模式的一种特殊状况,原语操作用来创建并返回对象。 |