1. 创建型
    1. 工厂方法模式
      1. 工厂基类不变
    2. 抽象工厂模式
      1. 产品族
    3. 单例模式
      1. 只允许类创建一个实例
    4. 原型模式
      1. 克隆对象,C#和Java内置支持
    5. 生成器模式
      1. 生成过程相同,结果不同
  2. 注意
    1. 设计模式只是工具
    2. 设计模式代码更高级语言的发展方向
    3. 设计模式说明现今高级语言的缺陷
    4. 现实中一切以实际需要为准,没有纯粹的设计模式
    5. 有些模式已经内置实现
    6. 基础就是面向对象,继承和多态
  3. 结构型
    1. 适配器模式
      1. 利于接口转换和调整
    2. 桥接模式
      1. 将抽象化与实现化脱耦,多维独立变化,毛笔/水彩笔
    3. 组合模式
      1. 部分-整体层次结构
    4. 装饰模式
      1. 不修改原始类进行动态扩展,引用包含而不是继承
    5. 外观模式Facade
      1. 封装子系统,变复杂为简单
    6. 轻量级模式
      1. 享元模式,大量相似对象共享同一个元类
    7. 代理模式
      1. 为原本不能或不便的问题提供代理
  4. 行为型
    1. 责任链模式
      1. 责任传递
    2. 命令模式
      1. 请求者和执行者独立
    3. 解释器模式
    4. 中介者模式
      1. 封装多个对象间的交互,减少相互引用,QQ群
    5. 迭代模式
    6. 观察者模式
      1. 发布者包含订阅者的引用
    7. 备忘录模式
    8. 状态模式
    9. 策略模式
      1. Context根据不同的IStrategy实例初始化
    10. 访问者模式
    11. 模版方法模式