"23种设计模式"这一经典分类最早系统性地提出是在1994年出版的著作 《Design Patterns: Elements of Reusable Object-Oriented Software》(中文译名:《设计模式:可复用面向对象软件的基础》)中。该书由四位作者------Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 共同撰写,他们也因此被称为"GoF"(Gang of Four,四人组)。
大多数平常用不到,但是有些经常可见。
比如策略模式,Strategy模式其实就是把方法(策略)当作可替换的变量传进去。将"行为"作为一等公民(first-class citizen)传入,比如传一个函数、lambda 表达式或接口实现。
参见:
这23种设计模式根据其目的和作用被分为三大类:
一、创建型模式(Creational Patterns)
关注对象的创建机制,帮助系统独立于对象的创建、组合和表示方式。
- Abstract Factory(抽象工厂)
- Builder(建造者)
- Factory Method(工厂方法)
- Prototype(原型)
- Singleton(单例)
共 5 种
二、结构型模式(Structural Patterns)
处理类或对象的组合,以形成更大的结构,同时保持结构的灵活性和效率。
- Adapter(适配器)
- Bridge(桥接)
- Composite(组合)
- Decorator(装饰器)
- Facade(外观)
- Flyweight(享元)
- Proxy(代理)
共 7 种
三、行为型模式(Behavioral Patterns)
关注对象之间的职责分配和通信机制,描述对象或类之间的交互与协作。
- Chain of Responsibility(责任链)
- Command(命令)
- Interpreter(解释器)
- Iterator(迭代器)
- Mediator(中介者)
- Memento(备忘录)
- Observer(观察者)
- State(状态)
- Strategy(策略)
- Template Method(模板方法)
- Visitor(访问者)
共 11 种
总计:5 + 7 + 11 = 23 种设计模式
这些模式至今仍是面向对象软件设计中的重要参考,广泛应用于各种编程语言和框架中。
之前已经写过几种,后面慢慢补。