1. 设计模式总览

image.png

创建型模式(Creational Patterns)

  • 单例(Singleton)模式
  • 原型(Prototype)模式
  • 工厂方法(FactoryMethod)模式
  • 抽象工厂(AbstractFactory)模式
  • 建造者(Builder)模式

行为型模式(Behavioral Patterns)

  • 模板方法(Template Method)模式
  • 策略(Strategy)模式
  • 命令(Command)模式
  • 职责链(Chain of Responsibility)模式
  • 状态(State)模式
  • 观察者(Observer)模式
  • 中介者(Mediator)模式
  • 迭代器(Iterator)模式
  • 访问者(Visitor)模式
  • 备忘录(Memento)模式
  • 解释器(Interpreter)模式

结构型模式(Structural Patterns)

  • 代理(Proxy)模式
  • 适配器(Adapter)模式
  • 桥接(Bridge)模式
  • 装饰(Decorator)模式
  • 外观(Facade)模式
  • 享元(Flyweight)模式
  • 组合(Composite)模式
  • 过滤器(Filter Pattern)模式

2. 设计模式 7 大原则

开闭原则(Open Closed Principle,OCP)

  • 对扩展开放,对修改关闭
  • 扩展新类而不是修改旧类

里氏替换原则(Liskov Substitution Principle,LSP)

  • 继承父类而不去改变父类

依赖倒置原则(Dependence Inversion Principle,DIP)

  • 面向接口编程,而不是面向实现类

单一职责原则(Single Responsibility Principle,SRP)

  • 每个类只负责自己的事情,而不是变成万能

接口隔离原则(Interface Segregation Principle,ISP)

  • 各个类建立自己的专用接口,而不是建立万能接口

迪米特法则(Law of Demeter,LoD)

  • 无需直接交互的两个类,如果需要交互,使用中间者
  • 过度使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性,使模块之间的通信效率降低

合成复用原则(Composite Reuse Principle,CRP)

  • 优先组合,其次继承
  • 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为