23 种设计模式实战
用大白话和 Java 实战代码,把 GoF 的 23 种设计模式一个一个讲透。
本系列配套开源项目 design-patterns-23——一个基于 React 的设计模式交互式学习平台。每种模式都有可视化演示,推荐边读文章边动手玩:
🎮 在线交互演示站:yeatsliao.github.io/design-patterns-23
这个系列是关于什么的?
设计模式的教程不少,但大多停留在教科书式的定义上,看完还是不知道该在什么时候用。这个系列换一种讲法:
- 每种模式先用生活中的例子解释清楚它到底在解决什么问题;
- 再给出一段不用该模式的**"烂代码"场景**,让你体会痛点在哪;
- 然后用完整可运行的 Java 代码做实战演练;
- 最后实事求是地分析优缺点与适用场景——什么时候该用,什么时候别用。
文章讲原理,演示站 管交互:每种模式在网站上都有一个用 React 实现的动态演示(比如模拟工厂生产产品、观察者收到通知),两边配合着看效果最好。
适合谁读
- 学过 Java 语法、想进阶面向对象设计的开发者
- 背过模式定义、但一写代码就不知道怎么落地的读者
- 准备面试、需要快速过一遍 23 种模式的求职者
文章目录
创建型模式(第 1-5 篇)
关注对象怎么创建,把对象的创建和使用解耦。
| 篇章 | 标题 | 一句话点题 |
|---|---|---|
| 第 1 篇 | 单例模式 (Singleton) | 只有我一个是真的 |
| 第 2 篇 | 工厂方法模式 (Factory Method) | 各自为政的作坊 |
| 第 3 篇 | 抽象工厂模式 (Abstract Factory) | 品牌全家桶 |
| 第 4 篇 | 建造者模式 (Builder) | 乐高积木怎么搭 |
| 第 5 篇 | 原型模式 (Prototype) | 影分身之术 |
结构型模式(第 6-12 篇)
关注类与对象怎么组合,搭出更灵活的结构。
| 篇章 | 标题 | 一句话点题 |
|---|---|---|
| 第 6 篇 | 适配器模式 (Adapter) | 它是充当翻译官的 |
| 第 7 篇 | 桥接模式 (Bridge) | 多维度变化的解耦利器 |
| 第 8 篇 | 组合模式 (Composite) | 统一对待整体与部分 |
| 第 9 篇 | 装饰器模式 (Decorator) | 动态赋予对象新功能 |
| 第 10 篇 | 外观模式 (Facade) | 系统的总服务台 |
| 第 11 篇 | 享元模式 (Flyweight) | 亿万对象的瘦身秘籍 |
| 第 12 篇 | 代理模式 (Proxy) | 我是你的全能经纪人 |
行为型模式(第 13-23 篇)
关注对象之间怎么协作,让职责分配更合理。
| 篇章 | 标题 | 一句话点题 |
|---|---|---|
| 第 13 篇 | 责任链模式 (Chain of Responsibility) | 踢皮球的高手 |
| 第 14 篇 | 命令模式 (Command) | 运筹帷幄的将军 |
| 第 15 篇 | 解释器模式 (Interpreter) | 语言的魔法师 |
| 第 16 篇 | 迭代器模式 (Iterator) | 遍历元素的通用钥匙 |
| 第 17 篇 | 中介者模式 (Mediator) | 拒绝乱连线的调度中心 |
| 第 18 篇 | 备忘录模式 (Memento) | 游戏存档,随时回档 |
| 第 19 篇 | 观察者模式 (Observer) | 这里的消息最灵通 |
| 第 20 篇 | 状态模式 (State) | 拒绝 if-else 地狱 |
| 第 21 篇 | 策略模式 (Strategy) | 条条大路通罗马 |
| 第 22 篇 | 模板方法模式 (Template Method) | 照着流程办事 |
| 第 23 篇 | 访问者模式 (Visitor) | 极其难懂但很强大 |
配套项目
| 资源 | 地址 |
|---|---|
| 在线交互演示站 | yeatsliao.github.io/design-patterns-23 |
| GitHub 仓库 | YeatsLiao/design-patterns-23 |
| 技术栈 | React 19 + TypeScript + Vite + Tailwind CSS + Framer Motion,支持中英双语 |
如果这个系列对你有帮助,欢迎给 design-patterns-23 点个 Star。