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个模式)

"单工建代策观装模"

单:单例(只有一个)

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

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

代:代理(替身)

策:策略(算法随意换)

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

装:装饰者(动态加料)

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

相关推荐
Poetinthedusk15 小时前
设计模式-命令模式
windows·设计模式·c#·wpf·命令模式
雨中飘荡的记忆15 小时前
设计模式之桥接模式:从原理到实战
设计模式
北海屿鹿16 小时前
设计模式概述
设计模式
真夜18 小时前
发布观察者模式使用场景记录
设计模式
会员果汁20 小时前
4.设计模式-代理模式
设计模式·代理模式
有一个好名字21 小时前
设计模式-代理模式
java·设计模式·代理模式
catchadmin1 天前
PHP 之高级面向对象编程 深入理解设计模式、原则与性能优化
设计模式·性能优化·php
郝学胜-神的一滴1 天前
使用EBO绘制图形:解锁高效渲染与内存节省之道
c++·qt·游戏·设计模式·系统架构·图形渲染
冷崖1 天前
原型模式-创建型
设计模式·原型模式
Poetinthedusk1 天前
设计模式-单例模式
单例模式·设计模式