设计模式笔记

目录

  1. 面向对象六大原则
  2. 《设计模式:可复用面向对象软件的基础》23种设计模式:
  3. 创建型模式
    1. 单例模式(Singleton)
    2. 构建者模式(Builder)
    3. 原型模式(Prototype)
    4. 工厂方法模式(Factory Method)
    5. 抽象工厂模式(Abstract Factory)
  4. 行为设计模式
    1. 策略模式(Strategy)
    2. 状态模式(State)
    3. 责任链模式(Chain of Responsibility)
    4. 解释器模式(Interpreter)
    5. 命令模式(Command)
    6. 观察者模式(Observer)
    7. 备忘录模式(Memento)
    8. 迭代器模式(Iterator)
    9. 模板方法模式(Template Method)
    10. 访问者模式(Visitor)
    11. 中介者模式(Mediator)
  5. 结构型设计模式
    1. 代理模式(Proxy)
    2. 组合模式(Composite)
    3. 适配器模式(Adapter)
    4. 装饰者模式(Decorator)
    5. 享元模式(Flyweight)
    6. 外观模式(Facade)
    7. 桥连接模式(Bridge)

面向对象六大原则

  1. Single Responsibility Principle
  2. Open Close Principle
  3. Liskov Substitution Principle
  4. Dependence Inversion Principle
  5. Interface Segregation Principle
  6. Law of Demeter

《设计模式:可复用面向对象软件的基础》23种设计模式:

创建型模式

单例模式(Singleton)

Tips: 个人推荐Java中使用枚举实现

构建者模式(Builder)

Tips: 通常作为配置类的构建器,避免过多的setter方法,实现链式调用

原型模式(Prototype)

Tips: Java的Object#clone()实现该模式,最终使用JNI进行字节复制去创建新对象

工厂方法模式(Factory Method)

Tips: Java使用工厂模式通常伴随着反射机制

抽象工厂模式(Abstract Factory)

Tips: AbstractFactory要保证结构稳定性

行为设计模式

策略模式(Strategy)

Tips: 系统中某个类的某一行为存在多种实现方式,而且这些实现方式可以互换时使用策略模式

状态模式(State)

Tips: 系统中某个类的对象存在多种状态,不同状态下行为有差异,而且这些状态之间可以发生转换时使用状态模式

责任链模式(Chain of Responsibility)

解释器模式(Interpreter)

命令模式(Command)

优势: 降低系统耦合度,方便增加新的命令,可以容易地设计一个命令队列,方便实现对请求的撤销和恢复

观察者模式(Observer)

备忘录模式(Memento)

迭代器模式(Iterator)

模板方法模式(Template Method)

访问者模式(Visitor)

注意: 对象结构要稳定

中介者模式(Mediator)

优势: 简化对象间的交互,方便对象间的交互进行进一步控制

结构型设计模式

代理模式(Proxy)

组合模式(Composite)

适配器模式(Adapter)

装饰者模式(Decorator)

优势: 提供比继承更多的灵活性

享元模式(Flyweight)

解释: 类似于对象缓冲池,通常单链表实现,把内部状态和外部状态分离,主要是为了减少内存中对象的数量

外观模式(Facade)

桥连接模式(Bridge)

优势: 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统