3大类设计模式

23种经典设计模式(GoF + 后续补充常用模式)通常被分为三大类:

一、创建型模式(Creational Patterns)------ 共 5 种(GoF 原始)

关注对象的创建方式,将对象的创建与使用分离。

  1. 单例模式(Singleton)
    确保一个类只有一个实例,并提供全局访问点。
  2. 工厂方法模式(Factory Method)
    定义一个创建对象的接口,让子类决定实例化哪一个类。
  3. 抽象工厂模式(Abstract Factory)
    提供一个接口,用于创建相关或依赖对象的家族。
  4. 建造者模式(Builder)
    将一个复杂对象的构建与表示分离,相同构建过程可创建不同表示。
  5. 原型模式(Prototype)
    用原型实例指定创建对象的种类,通过拷贝原型来创建新对象。

二、结构型模式(Structural Patterns)------ 共 7 种(GoF 原始)

关注类和对象的组合结构,处理类或对象的组合关系。

  1. 适配器模式(Adapter)
    将一个类的接口转换成客户希望的另一个接口。
  2. 桥接模式(Bridge)
    将抽象部分与实现部分分离,使它们可以独立变化。
  3. 组合模式(Composite)
    将对象组合成树形结构以表示"部分-整体"的层次结构。
  4. 装饰者模式(Decorator)
    动态地给一个对象添加额外职责。
  5. 外观模式(Facade)
    为子系统中的一组接口提供一个一致的界面。
  6. 享元模式(Flyweight)
    运用共享技术有效支持大量细粒度对象。
  7. 代理模式(Proxy)
    为其他对象提供一种代理以控制对这个对象的访问。

三、行为型模式(Behavioral Patterns)------ 共 11 种(GoF 原始)

关注对象之间的职责分配与算法封装。

  1. 责任链模式(Chain of Responsibility)
  2. 命令模式(Command)
  3. 解释器模式(Interpreter)
  4. 迭代器模式(Iterator)
  5. 中介者模式(Mediator)
  6. 备忘录模式(Memento)
  7. 观察者模式(Observer)
  8. 状态模式(State)
  9. 策略模式(Strategy)
  10. 模板方法模式(Template Method)
  11. 访问者模式(Visitor)

至此正好 23 种,这就是《设计模式:可复用面向对象软件的基础》(GoF 书)中正式提出的 23 种设计模式。

补充说明(常被面试问到)

  • 实际开发中最常用的 8--10 种:
    单例、工厂(工厂方法+抽象工厂)、建造者、代理、适配器、装饰者、观察者、策略、模板方法。
  • 最爱考的:单例、工厂、观察者、策略、装饰者、适配器、模板方法。
  • 最难理解的通常是:抽象工厂、桥接、解释器、访问者。

最容易被挖得很深的前8个

单例:问8种写法(饿汉、懒汉、DCL、静态内部类、枚举...)+ 反射/序列化破坏 + Spring 中的单例

工厂系列:简单工厂 vs 工厂方法 vs 抽象工厂区别 + 实际场景举例

代理:静态代理 vs JDK 动态代理 vs CGLIB + Spring AOP 原理

观察者 vs 发布订阅(Redis Pub/Sub、Kafka)区别

策略 + 工厂 + 模板方法 常常一起考(策略的上下文如何与工厂结合)

装饰者 vs 代理 区别(重点:透明性与目的不同)

模板方法 vs 策略(继承 vs 组合)

Builder 在高并发下如何线程安全?(通常配合原型模式或不可变对象)

一句口诀记忆高频模式(便于快速回忆)

"单工建代策观装模"

→ 单例、工厂、建造者、代理、策略、观察者、装饰者、模板方法

------ 这8个掌握精通,90%的设计模式都扛得住。

快速记忆口诀(8个模式)

"单工建代策观装模"

单:单例(只有一个)

工:工厂(抽象工厂+工厂方法)

建:建造者(复杂对象一步步建)

代:代理(替身)

策:策略(算法随意换)

观:观察者(状态变了我告诉你)

装:装饰者(动态加料)

模:模板方法(父类定流程,子类填空)

相关推荐
阿闽ooo3 天前
中介者模式打造多人聊天室系统
c++·设计模式·中介者模式
小米4963 天前
js设计模式 --- 工厂模式
设计模式
逆境不可逃3 天前
【从零入门23种设计模式08】结构型之组合模式(含电商业务场景)
线性代数·算法·设计模式·职场和发展·矩阵·组合模式
驴儿响叮当20103 天前
设计模式之状态模式
设计模式·状态模式
电子科技圈3 天前
XMOS推动智能音频等媒体处理技术从嵌入式系统转向全新边缘计算
人工智能·mcu·物联网·设计模式·音视频·边缘计算·iot
徐先生 @_@|||4 天前
安装依赖三方exe/msi的软件设计模式
设计模式
希望_睿智4 天前
实战设计模式之访问者模式
c++·设计模式·架构
茶本无香4 天前
设计模式之十六:状态模式(State Pattern)详解 -优雅地管理对象状态,告别繁琐的条件判断
java·设计模式·状态模式
驴儿响叮当20104 天前
设计模式之备忘录模式
设计模式·备忘录模式
驴儿响叮当20104 天前
设计模式之迭代器模式
设计模式·迭代器模式