设计模式速查手册 + 学习资源推荐

一、创建型模式(对象怎么创建)

  • Factory Method(工厂方法):定义一个创建对象的接口,让子类决定实例化哪个类,把实例化延迟到子类(目的:解耦)。
  • Abstract Factory(抽象工厂):提供一个接口,负责创建一系列 “相关或相互依赖” 的对象,无需指定具体类。
  • Builder(构建器):将一个复杂对象的构建与其表示相分离,同样的构建过程可创建不同表示。
  • Prototype(原型):用原型实例指定创建对象的种类,并通过拷贝原型来创建新对象。
  • Singleton(单件):保证一个类仅有一个实例,并提供全局访问点。

二、结构型模式(对象怎么组合)

  • Adapter(适配器):将一类的接口转换成客户期望的另一接口,让原本不兼容的类一起工作。
  • Bridge(桥接):将抽象部分与实现部分分离,使它们可以独立变化。
  • Composite(组合):将对象组合成树形结构表示 “部分 – 整体” 层次,使用户对单个对象和组合对象的使用具有一致性。
  • Decorator(装饰):动态地给对象增加额外职责,比继承更灵活(消除重复代码、减少子类个数)。
  • Facade(门面):为子系统的一组接口提供一个一致的高层界面,让子系统更易使用。
  • Flyweight(享元):运用共享技术支持大量细粒度对象。
  • Proxy(代理):为其他对象提供一种代理以控制访问(隔离、使用接口)。

三、行为型模式(对象怎么协作)

  • Template Method(模板方法):定义一个算法的骨架(稳定),把一些步骤延迟到子类(变化),子类可重定义特定步骤而不改变算法结构。
  • Strategy(策略):定义一系列算法并封装,使它们可互相替换,算法独立于使用它的客户变化。
  • Observer(观察者):定义对象间一对多的依赖,当 Subject 状态改变时,所有依赖者自动得到通知并更新。
  • State(状态):允许对象在内部状态改变时改变其行为,仿佛修改了类。
  • Command(命令):将请求封装为对象,支持参数化、排队、日志和可撤销操作。
  • Iterator(迭代器):提供一种方法顺序访问聚合对象中的各元素,而不暴露内部表示。
  • Mediator(中介者):用一个中介对象封装一系列对象交互,使对象松散耦合、可独立改变交互。
  • Memento(备忘录):在不破坏封装的前提下捕获并保存对象内部状态,以便之后恢复。
  • Chain of Responsibility(职责链):使多个对象都有机会处理请求,沿链传递直到有对象处理。
  • Visitor(访问者):在不改变元素类的前提下,定义作用于其上的新操作(扩展)。
  • Interpreter(解释器):给定语言定义其文法表示,并用解释器解释语言中的句子。

四、学习资源推荐

  • 23 个小案例带你吃透 23 种设计模式(C++ 实现)
  • 菜鸟设计模式:创建型 / 结构型 / 行为型 / J2EE 模式
  • design-patterns-for-humans:设计模式超简单解释
  • Design Patterns Wiki
  • awesome-design-patterns
  • python-patterns
  • system-design-primer
  • 快速记忆 23 种设计模式(知乎文章)
  • java-design-patterns

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部