Head First 模式之间的对比

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