===================
策略模式 和 模板模式
===================
相同点: 提供一个抽象的统一接口,可以使用不同的算法来实现这一接口.
不同点: 策略模式采用 组合方式 ,模板模式采用的是 继承方式. 造成的不同后果是,采用组合方式的策略模式可以动态修改使用的算法实现,而采用继承方法的模板模式则只能使用事先设定的特定算法.
=======================
简单工厂 工厂方法 抽象工厂
=======================
简单工厂: 抽象了同一类型(比如不同品牌的笔记本电脑)产品的生产过程,通过工厂类来实现对不同产品生产过程的选择.
工厂方法: 不仅抽象了产品类的生产过程,还抽象了工厂类本身. 将特定的产品的生产过程和特定的工厂相对应. 将原先工厂类中的选择提升到工程类以上的层级---即客户层级. 通过选择特定的工厂,来选择生产特定的产品.
抽象工厂: 在工厂方法的基础上,将特定的产品生产过程和特定的工厂类之间的对应关系解除,使得工厂类和产品类之间能够产生更多灵活的组合方式.
=================
装饰器模式 与 子类化
=================
装饰器模式是为一个类添加特定的功能,而不修改原类的代码. 为一个类扩充功能也可以通过继承的方式,在子类中实现父类中不具有的功能.
装饰器模式的优点: 装饰器为一个类添加功能是采用动态的方式进行的,可以动态增加删除.这个是通过继承,创建子类无法实现的.
==================
代理模式 与 策略模式
==================
代理模式和策略模式在结构上非常相似. 策略模式中 有一组实现相似功能的算法作为可替代算法.
而代理模式中的代理类主要是为调用类提供某一功能,不强调实现相似功能的算法.
=====================
中介模式 和 外观模式
=====================
中介模式 在几个相互交互的对象之间建立一个 交互模块. 避免这些交互对象直接的耦合. 外观模式是将一组功能不同的,不具有相互交互性的对象封装成特定功能,提供一个统一的界面 供其他类调用.
=======================
建造者模式
=======================
建造者模式可以理解为 一个模板模式 的变形. 模板模式的目的是为了在子类中维护一个相同的接口.
而建造者模式增加了一个 指导者类.用来获取和按照特定顺序调用 建造器子类中的方法. 不但实现了接口的统一(建造器抽象类定义了统一的接口),而且在指导类中指定了 方法调用的先后顺序.