(一) 创建型模式
Singleon模式:解决的是实体对象个数的问题。除了Singleton之外,其它创建型模式解决的都是new所带来的耦合关系。
Factory Method 、Absract Factory 、Builder都需要一个额外的工厂类来负责实例化“易变对象”,而Protorty则是通过原型(一个特殊的工厂类)来克隆“易变对象”。
通常如果遇到“易变类”,超初的设计都是从Factory Method开始,当遇到更多的复杂变化时,再考虑重构为其他三种工厂模式。
(二)结构型模式
Adaper模式:注重转换接口,将不吻合的接口适配对象。
Bridge模式:注重分离接口与其实现,支持多维度变化。
Composite模式:注重统一接口,将“一对多”的关系转化为“一对一”的关系。
Decorator模式:注重稳定接口,在此前提下为对象扩展功能。
Facade模式:注重简化接口,简化组件系统与外部客户程序的依赖关系。
Flyweight模式:注重保留接口,在内部使用。在内部使用共享技术对对象在存储进行优化。
Proxy模式:注重假借接口,增加间接层来实现灵活控制。
(三)行为型模式
Template Method模式:封装算法结构,支持算法子步骤变化.
Stragegy 模式:注重封装算法,支持算法的变化。
State模式:注重封装与状态相关的行为,支持状态的变化.
Memento模式:注重封装对象状态的变化,支持状态的保存、恢复。
Mediator模式:注重封装对象间的变互,支持对象交互的变化。
ChainOfResponsibility模式:注重封装对象责任,支持责任的变化。
Command模式:注重将请求封装为对象,支持请求的变化。
Iterator模式:注重封装集合对象内部变化,支持集合的变化。
Interpreter模式:注重封装特定领域变化,支持领域问题的频繁变化。例如字符串的模式匹配。
Observer模式:注重封装对象通知,支持通信对象的变化。
Visitor模式:注重封装对象操作变化,支持在运行时为类层次结构动态添加新的操作。