蔚淦丞
发布于 2026-09-01 / 8 阅读
0
0

设计模式总结

23 种设计模式

分为三大类:创建型、结构型、行为型

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

  1. 单例模式 Singleton

一个类只能创建唯一一个实例,全局访问。

  1. 工厂方法 Factory Method

定义一个接口,让子类决定创建哪一种对象。

  1. 抽象工厂 Abstract Factory

创建一组相关的对象家族。

  1. 建造者 Builder

分步构建一个复杂对象,分离构造和表示。

  1. 原型 Prototype

通过克隆(拷贝)已有对象生成新对象。

👉 重点:单例、工厂、建造者

二、结构型模式(把类 / 对象组合起来,搭架构)

  1. 适配器 Adapter

做一个 “转换器”,把一个接口转成另一个,适配旧代码。

  1. 装饰器 Decorator

不修改原有类,动态给对象增加新功能。

  1. 代理 Proxy

用一个代理对象,控制对真实对象的访问(延时加载、权限校验)。

  1. 外观 Facade(门面)

给一堆复杂子系统提供一个简单统一入口,对外隐藏复杂细节。

  1. 桥接 Bridge

将抽象和实现分离,二者可以独立变化。

  1. 组合 Composite

树形结构,容器对象和叶子对象统一对待,比如文件目录树。

  1. 享元 Flyweight

共享大量重复对象,节省内存。

👉 高频:适配器、装饰器、代理、外观

三、行为型模式(控制对象之间怎么交互、流程怎么跑)

  1. 观察者 Observer(订阅‑发布)

一个对象状态变了,自动通知所有订阅它的对象。网络模块、事件回调最常见。

  1. 策略 Strategy

把一组算法封装起来,可以互相替换,运行时切换算法。

  1. 状态 State

对象内部状态改变时,行为跟着改变。

  1. 命令 Command

将请求封装成对象,可以排队、撤销、重做。

  1. 模板方法 Template Method

父类定好算法骨架,具体步骤交给子类实现。

  1. 迭代器 Iterator

遍历容器里面的元素,不暴露容器内部结构。C++ STL 迭代器就是这个。

  1. 责任链 Chain of Responsibility

请求沿着一条处理链依次传递,直到有人处理它。

  1. 中介者 Mediator

对象之间不直接通信,全部通过中介中转,解耦。

  1. 备忘录 Memento

保存对象历史状态,可以回滚撤销。

  1. 访问者 Visitor

在不修改类的前提下,新增对元素的操作。

  1. 解释器 Interpreter

自定义语法解析,极少用到。

👉 重中之重:观察者、策略、模板方法

23 种设计模式速记背诵表

一、创建型(5 个):管对象怎么创建

表格

模式

核心口诀

适用场景

单例 Singleton

一个类,只能一个实例

日志、全局配置、连接池

工厂方法 Factory‑Method

父类定接口,子类造产品

产品经常扩展,遵循开闭原则

抽象工厂 Abstract‑Factory

一次造一套配套产品家族

跨平台成套组件、成套通信对象

建造者 Builder

分步拼装复杂对象

复杂报文、超多参数配置对象

原型 Prototype

克隆已有对象生成新对象

创建开销大、大量字段重复

二、结构型(7 个):管类 / 对象怎么组合

表格

模式

核心口诀

适用场景

适配器 Adapter

转换器,接口不匹配就转一下

老代码、第三方 SDK 兼容

桥接 Bridge

两个变化维度,组合代替继承

图形‑颜色、跨平台业务

组合 Composite

树结构,单个对象和容器一视同仁

文件目录、权限菜单、组织树

装饰器 Decorator

不改动原类,动态加功能

给原有对象附加日志、加密

外观 Facade(门面)

复杂子系统,对外一个简单入口

SDK 封装、服务启动入口

享元 Flyweight

共享重复对象,省内存

大量重复小对象:字符、粒子

代理 Proxy

找个替身控制访问真实对象

RPC 代理、权限校验、延迟加载

三、行为型(11 个):管对象之间怎么通信、行为怎么分配

表格

模式

核心口诀

适用场景

观察者 Observer

一对多,一变全通知

事件订阅、配置热更新

模板方法 Template‑Method

父类定骨架,子类填细节

固定流程框架,步骤可定制

策略 Strategy

一堆算法,运行时随便切换

消除大量 if‑else,加密 / 调度算法

命令 Command

请求打包成对象,可排队撤销

异步任务队列、操作回滚

迭代器 Iterator

统一遍历,隐藏容器内部

STL 迭代器、自定义容器遍历

责任链 Chain‑Responsibility

请求一条链上挨个传递处理

过滤器、多级校验、日志分级

状态 State

状态一变,行为自动跟着变

网络状态机、任务生命周期

备忘录 Memento

保存快照,可以恢复回滚

撤销操作、存档、版本回退

中介者 Mediator

不许互相通信,全部走中间人

聊天室、多模块调度中心

访问者 Visitor

元素不动,外面新增操作

语法树遍历,数据稳定操作多变

解释器 Interpreter

解析自定义文法表达式

简单脚本引擎,后端极少用

C++ 后端优先级

⭐⭐⭐⭐⭐最高频

单例、工厂方法、策略、观察者、装饰器

⭐⭐⭐⭐高频

代理、建造者、责任链、模板方法、状态模式

⭐⭐⭐低频

抽象工厂、原型、适配器、外观、组合、迭代器、备忘录

⭐⭐冷门

桥接、享元、中介者、访问者、解释器


评论