三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

23 种设计模式实战速查表

23 种设计模式实战速查表

项目选型背诵版|按创建 / 结构 / 行为三类,场景 + 选型 + 作用,直击避免重复造轮子

一、创建型模式(5 种:解决「对象重复 new、重复初始化」,统一对象创建,不重复构建逻辑)

表格

模式适用业务场景核心作用(防重复造轮子)
单例 Singleton配置管理类、线程池、Redis 连接池、工具类全局只实例化 1 份,避免频繁创建销毁、重复初始化资源
简单工厂同家族少量实现类创建(短信:阿里云 / 腾讯云)统一封装 new 逻辑,各处不用重复实例化
工厂方法 FactoryMethod业务持续扩展(支付:微信 / 支付宝 / 银联)一个产品对应一个工厂,新增实现不加原有代码,不用重复创建代码
抽象工厂 AbstractFactory成套产品(支付 + 对账、消息 + 推送成套组件)批量创建一组关联对象,避免多处零散 new 成套组件
建造者 Builder复杂对象组装(多条件查询参数、复杂返回 VO)拆分构建步骤,链式构造,避免大量重复 set 赋值代码

选型口诀:单例控唯一,简单工厂少扩展,工厂方法易扩展,抽象工厂成套造,建造者拼复杂对象。

二、结构型模式(7 种:解决「类整合、兼容、增强、树形封装」,统一结构复用)

表格

模式适用业务场景核心作用(防重复造轮子)
适配器 Adapter对接三方接口(多种第三方登录、不同支付 SDK)统一对外入参,兼容多版本接口,不用重复写适配转换代码
装饰器 Decorator动态叠加功能(日志 + 权限 + 限流层层包装接口)原有代码不动,叠加增强,不用每次新增功能重写原有类
代理 Proxy接口鉴权、缓存、事务、RPC 远程调用统一代理层实现通用增强,业务代码无需重复写日志 / 校验
组合 Composite菜单树、部门组织、商品多级分类统一处理单个节点和节点集合,不用分别写单条 / 批量两套遍历逻辑
外观 Facade复杂多步骤接口聚合(下单:扣库存 + 生成订单 + 发消息)封装内部复杂多类调用,对外只暴露一个入口,上层不用重复拼接调用链路
享元 Flyweight海量重复对象(字典、商品分类、常量字典)复用内存中相同对象,避免重复创建大量一模一样实例
桥接 Bridge两个维度同时扩展(消息:短信 / 邮箱 + 普通 / 加急)拆分两大变化维度,避免类爆炸,减少重复子类

选型口诀:适配兼容第三方,装饰动态加功能,代理统一做增强,组合搞定树形类,外观简化复杂调用,享元复用重复对象。

三、行为型模式(11 种:解决「重复分支、重复流程、重复通知、重复遍历」逻辑复用)

表格

模式适用业务场景核心作用(防重复造轮子)
策略 Strategy大量 if-else 分支(运费计算、优惠规则、支付渠道)拆分每种算法为独立策略,消除臃肿判断,新增优惠不用改老代码
模板方法 Template流程固定、局部逻辑不同(导入 Excel、订单审核、文件解析)父类固定公共流程,子类只实现差异化步骤,公共逻辑只写 1 次
观察者 Observer下单联动:扣库存、发短信、积积分、记录日志发布者与监听解耦,新增下游业务不用修改下单主逻辑
迭代器 Iterator自定义集合遍历、树形遍历统一遍历规范,不用每种集合手写一套遍历代码
命令 Command后台任务队列、撤销操作、定时指令请求封装成对象,统一排队执行,不用重复封装请求参数
状态 State订单多状态流转(待支付→已付款→已发货→已完成)消除状态 if 分支,每个状态独立类,新增状态不改动原有代码
责任链 Chain参数校验→黑名单→限流→权限校验多级拦截链式流转校验,新增校验节点直接加链,不用嵌套 if
备忘录 Memento表单草稿保存、订单数据回滚保存对象快照,不用重复存储多份历史数据
中介者 Mediator多组件互相依赖(表单多字段联动)组件通过中介通信,消除大量组件互相调用代码
访问者 Visitor同一实体多维度统计(商品:销量统计 / 利润统计)实体不动,新增统计逻辑新增访问类,不修改原有实体
解释器 Interpreter规则表达式解析、简易引擎固定语法统一解析,不用重复编写表达式解析逻辑

选型口诀:分支多用策略,流程固定用模板,联动通知观察者,多级拦截责任链,状态流转用状态。

四、落地选用三步法(项目实战选模式通用规则)

  1. 找重复:重复 new→创建型;重复转换 / 增强→结构型;重复 if / 重复流程→行为型
  2. 找变化:以后频繁新增实现(支付、优惠)优先:策略、工厂;以后频繁加功能:装饰、代理
  3. 防过度设计
    • 简单小工具:直接工具类,不用设计模式
    • 中等通用逻辑:工具类 + 模板
    • 业务易扩展、多实现场景:上设计模式

五、终极精简背诵总结

  1. 创建型管实例创建,杜绝重复 new;结构型管类整合,统一兼容增强;行为型管业务逻辑,消灭冗余分支与流程
  2. 选用设计模式核心目的:剥离重复代码、隔离变化代码、复用通用代码,从架构层面杜绝重复造轮子
← 返回列表