编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • 面向对象设计

  • 常见设计原则

  • 巧学设计模式

    • README
      • 本专栏不一样的地方
      • 主线案例:电商系统
      • 阅读路径
      • 完整章节列表
        • 0. 总览
        • 1. 创建型模式(5 种)
        • 2. 结构型模式(7 种)
        • 3. 行为型模式(11 种)
      • 写作约定
      • 模式之间的"联动网络"
      • 配套延伸
      • 警告:克制使用模式
    • 单例模式设计思想
    • 工厂模式设计思想
    • 建造者模式设计思想
    • 原型模式设计思想
    • 静态代理设计模式
    • 动态代理设计模式
    • 适配器模式设计思想
    • 装饰者模式设计思想
    • 外观模式设计思想
    • 桥接模式设计思想
    • 组合模式设计思想
    • 享元模式设计思想
    • 观察者模式设计思想
    • 策略者模式设计思想
    • 模版模式设计思想
    • 迭代器模式设计思想
    • 职责链模式设计思想
    • 命令模式设计思想
    • 状态模式设计思想
    • 备忘录模式设计思想
    • 中介者模式设计思想
    • 访问者模式设计思想
    • 解释器模式设计思想
    • 23种设计模式概括
    • 技术写作模板
  • 系统架构设计

  • 编程
  • 巧学设计模式
杨充
2023-01-07
目录

README

# 巧学设计模式

23 种 GoF 设计模式,一条电商主线串到底——拒绝"模式定义 + UML"的流水账,每篇都从真实业务痛点引入,每篇都告诉你"它和别的模式怎么配"。

# 本专栏不一样的地方

别处 本专栏
模式定义→UML→例子→优缺点 痛点引入→原理→案例→模式联动→思考题
例子之间互相孤立 全 23 篇共用同一个电商系统主线
只讲一种模式 每篇都标注与其他模式的协作/对比/替代
文字描述选型 每篇都画 Mermaid 决策树

# 主线案例:电商系统

flowchart LR
    商品 --> 购物车 --> 收银台 --> 订单
    订单 --> 履约
    订单 --> 售后
    商品 -.规则.-> 促销引擎
    收银台 -.联动.-> 促销引擎
1
2
3
4
5
6

每个模式都是这套电商系统中的一个具体子需求——读完整个专栏,相当于"在脑子里跑通一个电商架构"。

# 阅读路径

flowchart TB
    Start[从这里开始<br/>00.23 种设计模式概括] --> L1
    L1[L1·必学 6 个<br/>单例·工厂·建造者·策略·观察者·模板] --> L2
    L2[L2·常用 8 个<br/>适配器·装饰·代理·外观·组合<br/>状态·职责链·命令] --> L3
    L3[L3·进阶 5 个<br/>桥接·享元·原型·迭代器·中介者] --> L4
    L4[L4·冷门但开眼界 4 个<br/>备忘录·访问者·解释器·动态代理]
1
2
3
4
5
6
  • 3 天速通:只读 L1(6 篇)即可看懂多数开源代码
  • 2 周入门:L1 + L2(14 篇)覆盖 80% 项目场景
  • 1 个月精通:23 篇全过 + 自己用主线案例搭个 demo

# 完整章节列表

# 0. 总览

章节 内容
00.23种设计模式概括 主线案例 + 速查地图 + 三大类详解

# 1. 创建型模式(5 种)

章节 一句话 主线扮演
01.单例模式 全局唯一对象 配置中心、ID 生成器
02.工厂模式 把"造对象"封起来 商品/订单工厂
03.建造者模式 复杂对象一步步建 复杂订单组装
04.原型模式 拷贝出新对象 SKU 模板克隆
—(单例的扩展也见此组)

# 2. 结构型模式(7 种)

章节 一句话 主线扮演
05.静态代理 加层壳控制访问 三方接口代理
06.动态代理 运行时生成代理 AOP 日志/事务
07.适配器模式 接口转换 老支付接口适配
08.装饰者模式 不改原类加功能 订单加日志/缓存
09.外观模式 一站式入口 下单门面服务
10.桥接模式 抽象与实现解耦 多渠道 × 多支付
11.组合模式 树形结构统一处理 商品分类树
12.享元模式 ✨ 对象共享省内存 商品图标/品牌 Logo 共享

# 3. 行为型模式(11 种)

章节 一句话 主线扮演
13.观察者模式 一对多事件广播 订单事件通知
14.策略模式 算法可换 多种促销算法
15.模板模式 骨架不变填空 多渠道支付骨架
16.迭代器模式 解耦遍历与容器 商品列表遍历
17.职责链模式 ✨ 链式处理 下单前置校验链
18.命令模式 ✨ 调用对象化 下单后置动作
19.状态模式 ✨ 状态机面向对象 订单生命周期
20.备忘录模式 ✨ 拍快照可回滚 订单变更撤销
21.中介者模式 ✨ 网状变星状 收银页组件协作
22.访问者模式 ✨ 元素稳·操作变 SKU 多种统计
23.解释器模式 ✨ 迷你 DSL 解析 促销规则引擎

✨ 标记为本轮新增(享元 + 7 个行为型),与原有 16 篇组成完整 23 模式专栏。

# 写作约定

每篇文章统一结构:

  1. 引子:电商主线下一个具体痛点
  2. 基础介绍:模式动机 / 定义 / 何时用
  3. 原理:朴素方案的问题 → 模式如何改造
  4. 结构:UML/Mermaid 类图 + 角色
  5. 案例:电商代码 + 真实世界用法
  6. 分析:优缺点 + 与近邻模式对比 + 模式联动
  7. 总结:一句话记忆 + 选型决策树 + 思考题

# 模式之间的"联动网络"

设计模式真正的威力不在单点,而在组合。本专栏每篇都有模式联动小节,部分高频组合举例:

flowchart LR
    职责链 --组合--> 命令 --组合--> 备忘录
    备忘录 --配合--> 命令
    状态 --配合--> 命令
    访问者 --作用于--> 组合树
    解释器 --AST--> 访问者
    中介者 --内部用--> 观察者
    工厂 --经常单例化--> 单例
    享元 --本质是工厂--> 工厂
1
2
3
4
5
6
7
8
9

把这张图记住,就懂了"为什么资深工程师从不只用一个模式"。

# 配套延伸

方向 推荐
OOP 思想根基 05.面向对象设计
重构落地能力 05.面向对象设计/07.重构十二式
真实工程案例 Spring 源码 / OkHttp 源码 / JDK 集合源码
进阶阅读 《Head First 设计模式》《重构》《Clean Code》

# 警告:克制使用模式

学完 23 个模式后最容易犯的错——到处套模式。请记住:

模式是用来降低复杂度的,不是用来展示水平的。
当一个 if 就能解决的问题,硬上策略模式只会让代码更难懂。

什么时候用模式?当你已经被痛点折磨到了,模式才是解药;否则,它就是病。

上次更新: 2026/06/17, 11:43:57
项目重构演进之路
单例模式设计思想

← 项目重构演进之路 单例模式设计思想→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式