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

"单工建代策观装模"

单:单例(只有一个)

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

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

代:代理(替身)

策:策略(算法随意换)

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

装:装饰者(动态加料)

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

相关推荐
双木的木1 小时前
Coggle数据科学 | 并行智能体:洞察复杂系统的 14 种并发设计模式
运维·人工智能·python·设计模式·chatgpt·自动化·音视频
执笔论英雄2 小时前
【RL】Slime异步原理(单例设计模式)3
设计模式
老鼠只爱大米2 小时前
Java设计模式之装饰器模式详解
java·设计模式·装饰器模式·decorator·java设计模式
9***Y482 小时前
Web3预言机设计模式
设计模式·web3
wudl55662 小时前
Agent 设计模式全面分析
设计模式
__万波__2 小时前
二十三种设计模式(四)--原型模式
java·设计模式·原型模式
4***g8942 小时前
Java进阶-SpringCloud设计模式-工厂模式的设计与详解
java·spring cloud·设计模式
__万波__2 小时前
二十三种设计模式(五)--建造者模式
java·设计模式·建造者模式
北郭guo2 小时前
Java设计模式 【理论+代码实现】 让你从小白到大佬的蜕变
java·开发语言·设计模式