-
解释器模式完全指南:从规则引擎到 SpEL 与 mini 语言设计
解释器模式是 23 个 GoF 模式里"应用场景最窄但威力最大"的一个 —— 它专门解决"给定一种文法,构造一个能解释这种文法语句的解释器"。听起来很学术,但你工作里早就用过:Excel 的公式、Linux 的正则、SQL 查询、模板引擎、表达式语言、规则引擎、CSS 选择器,本质都是解释器。这篇文章把解释器从原理讲到 ANTLR / Drools / Sp…- 0
- 0
-
访问者模式完全指南:从 AST 遍历到 Java NIO FileVisitor 的双分派艺术
访问者模式可能是 23 个 GoF 模式里"最难一眼理解但威力最大"的一个 —— 它解决一个具体的工程难题:已经定型的对象树,如何在不改这些类的前提下给它们添加新操作。编译器的 AST 遍历、Lint 工具、序列化框架、文档结构分析,背后都靠它。这篇文章把访问者从动机讲到 AST 工具、Java NIO FileVisitor、JSON 树解析,讲清楚它和组合模式、迭代器、双分…- 0
- 0
-
模板方法模式完全指南:从 Spring JdbcTemplate 到 Servlet 与框架设计
模板方法模式是 GoF 23 个模式里"最像继承本身"的一个 —— 它的核心思想就是"把算法的骨架定义在父类,具体步骤的实现交给子类"。Spring 的 JdbcTemplate / RestTemplate、Servlet 的 service 方法、Junit 的测试生命周期、几乎所有用 "Template" 命名的类背后都是它。这篇文…- 0
- 0
-
备忘录模式完全指南:从撤销重做到游戏存档与配置回滚
备忘录模式听起来就和"撤销"密切相关 —— 它的核心目标是在不破坏对象封装性的前提下,保存对象内部状态,以便日后恢复。文本编辑器的 undo、游戏存档、数据库事务、配置回滚,背后都是它。这篇文章从最朴素的"复制对象"讲起,讲清楚备忘录、命令模式和原型模式的关系,以及在内存敏感场景下的优化技巧。 问题:复制对象会破坏封装 看一个最朴素的尝试 —— 保存编辑器状…- 0
- 0
-
状态模式完全指南:从 if 地狱到订单状态机的优雅演化
"为什么我的代码里 if (status == X) 写得到处都是?"—— 这是状态模式登场的最常见前奏。订单状态、连接状态、UI 状态、游戏角色状态:只要一个对象在不同状态下有不同行为,if/switch 就开始堆积。状态模式给出的答案是:把每个状态做成一个对象,对象的行为随状态对象切换而改变。这篇文章把状态模式从"if 地狱"讲到状态机框架、Redux …- 0
- 0
-
策略模式完全指南:从 if/else 选算法到 Spring 注入与 AB 测试
"我有一组算法,根据条件选择用哪个" —— 这是策略模式的天然场景。排序算法、压缩算法、定价规则、推荐策略、支付方式 —— 处处都是它。策略模式可能是 23 个模式里最"代码量小、收益却大"的一个。这篇文章把策略模式从动机讲到 Lambda 实现、Spring 注入、AB 测试,讲清楚它和状态、模板方法的边界。 问题:if/else 选算法 class So…- 0
- 0
-
命令模式完全指南:从 Undo/Redo 到 Event Sourcing 与 CQRS
命令模式听起来抽象,但落地极其具体:把"做一件事"封装成一个对象。一旦做到这点,你可以排队、撤销、重做、记录、回放、跨进程传输 —— 这些能力都是因为"操作变成数据"而获得的。Redux 的 action、消息队列的 message、数据库的事务日志、文本编辑器的 undo/redo、Git 的 commit —— 背后都是命令模式。这篇文章把命令模式从动机…- 0
- 0
-
迭代器模式完全指南:从 for-each 到 Stream / Generator 的现代演化
迭代器模式是 23 个 GoF 模式里最"成功"的一个 —— 成功到几乎所有现代语言都把它内置进语法:Java 的 for-each、Python 的 for x in、JS 的 for...of、C# 的 foreach、Rust 的 iter()。这背后都是迭代器模式。但内置归内置,什么时候要自己实现迭代器、惰性求值的代价、流式处理的边界,这些工程问题没那么显然。这篇文章把…- 0
- 0
-
中介者模式完全指南:从表单联动地狱到消息总线的解耦利器
中介者模式名字玄但解决的问题特别接地气:一堆对象彼此互相调用导致依赖网爆炸时,引入一个"中介",让它们只和中介通信。聊天室、表单字段联动、机场塔台、空管系统、消息总线 —— 这些场景都是中介者。这篇文章从一个真实的"表单联动地狱"讲起,看清中介者怎么把 N×N 的依赖压成 N×1。 问题:对象之间互相调,关系成"网" 看一个常见的表单需求…- 0
- 0
-
责任链模式完全指南:从 if/else 地狱到中间件管道的工程演化
责任链模式可能是行为型模式里"应用密度最高"的一个 —— Express / Koa / Spring Security / Servlet Filter / Netty Pipeline / Redux 中间件,几乎所有需要"一串处理器依次处理同一个请求"的地方,你都能找到它。这篇文章把责任链的本质讲透,从最朴素的 if/else 重构开始,走到 HTTP…- 0
- 0
-
享元模式完全指南:从 Integer 缓存到游戏粒子系统的内存优化
享元模式(Flyweight)在 GoF 23 个模式里使用频率不高,但它解决的问题非常具体:当系统里需要大量"细粒度对象"时,如何避免内存爆炸。Java 的 Integer.valueOf、String 池、字体渲染、游戏里的粒子系统,都在悄悄使用它。这篇文章把享元从原理讲到实战,讲清楚"内部状态 vs 外部状态"这个核心区分,以及它在不可变对象大行其道的…- 0
- 0
-
代理模式完全指南:从静态代理到 Spring AOP 的工程化巅峰
代理模式可能是最被"实际使用得最多,但意识到自己在用的次数最少"的设计模式 —— 因为它太基础了。Spring AOP、Hibernate 懒加载、RPC 框架、CDN、虚拟代理、安全代理,这些工程基础设施全是代理。这篇文章把代理从原理讲到 JDK 动态代理、CGLib、Mockito,讲清楚它和装饰器、适配器、外观的边界,以及"动态代理"这个让代理威力倍增…- 0
- 0
-
装饰器模式完全指南:从 Java IO 流到 HTTP 中间件的工程实战
装饰器模式可能是 GoF 23 个模式里"使用频率排前三、被误解程度也排前三"的一个。它的核心思想极其简单 —— 用一个包装对象给原对象加新功能,且包装可以叠加。但很多人把它和继承混为一谈,或者把它和 Python 装饰器、Java 注解当成同一件事。这篇文章把装饰器从原理讲到 Java IO 流、HTTP 中间件、React HOC,讲清楚它和代理、适配器、责任链的边界。 问…- 0
- 0
-
外观模式完全指南:从 jQuery 到 API 网关的分层简化
外观模式可能是 23 个 GoF 模式里"最朴实但最被忽视"的一个。它没有炫酷的继承结构,也没有复杂的多态,核心思想就一句话:给一个复杂的子系统提供一个简单的入口。但越是朴实的模式,真实代码里的"反例"越多 —— 看看那些"我要做 X 还要先 new 五个对象设三个属性调四个方法"的 API,就知道外观模式有多重要。这篇文章把外观模式从动…- 0
- 0
-
原型模式完全指南:从浅克隆到深拷贝再到不可变共享
原型模式(Prototype)是 GoF 23 个模式里最容易被误解的一个 —— 听起来玄,实际上做的事就是"克隆"。但要把克隆做对、做安全、做高效,牵扯到深浅拷贝、序列化陷阱、循环引用、不可变共享一连串细节。这篇文章从最朴素的需求讲到 JS 原型链、Spring Prototype Scope,让你看到这个模式如何在不同语言里以不同样貌出现。 原型模式要解决什么问题 正常创建…- 0
- 0
-
适配器模式完全指南:从插头类比到支付网关接入的工程实战
适配器模式是 23 个 GoF 模式里使用频率最高的之一,但它常被低估为"换个接口的小技巧"。实际上"系统集成、第三方库接入、遗留代码兼容"这些工程里最棘手的问题,大多数都靠适配器解决。这篇文章把适配器从原理讲到 Stripe / Slack / 老 API 升级的真实场景,讲清楚它与代理、装饰器、桥接的边界。 适配器要解决的根本问题 电源插头是最直观的类比…- 0
- 0
-
桥接模式完全指南:从笛卡尔积爆炸到 N+M 的优雅设计
桥接模式名字玄,实际解决的问题非常具体:当一个东西在两个维度上各自演化时,不要用继承把它们硬绑在一起。最经典的例子是图形 × 颜色:有 Shape(圆、方、三角)和 Color(红、绿、蓝)两个维度,朴素的继承会爆出 3×3=9 个类(红圆、绿圆、蓝圆、红方……),桥接模式让你只需要 3+3=6 个类。这篇文章把桥接的本质讲透,带你看 JDBC、SLF4J、跨平台 UI 是怎么用它的。 问题:继承…- 0
- 0
-
组合模式完全指南:从 DOM 到表达式树的统一抽象
"目录树""组织架构""菜单和子菜单""DOM"—— 凡是有"整体由部分组成,部分又可以由更小的部分组成"这种结构的地方,组合模式就在那里。它的核心目的是:让客户端用统一方式对待"单个对象"和"对象的组合"。这篇文章带你从最朴素的文件系统例子讲起,看清组合模式…- 0
- 0
-
建造者模式完全指南:从构造函数地狱到流式 API 的工程演化
"参数太多了"、"可选字段一堆"、"对象构造逻辑复杂"—— 这些都是建造者模式登场的信号。Lombok 的 @Builder、Java 的 StringBuilder、SQL 查询构造器、HTTP 客户端的链式 API,全都是建造者模式的产物。这篇文章把建造者从最朴素的需求讲到流式 API 的工程实现,讲清楚它和工厂、模板方法、链式调用的…- 0
- 0
-
单例模式完全指南:从双重检查锁到枚举单例,以及为什么大家都说"少用"
单例模式是 23 个 GoF 设计模式里最简单也最常被误用的一个。它简单到一句话能讲完——"保证一个类只有一个实例,并提供全局访问点";但它被滥用到很多团队代码 review 时会专门列一条"少用单例"。这篇文章把单例的所有实现方式、线程安全细节、坑点、替代方案,以及"什么时候真的该用它"一次讲透。 单例的本质问题:全局唯一 单例要解决的…- 0
- 0
-
工厂方法模式完全指南:从硬编码 new 到开闭原则的优雅实现
工厂方法模式是创建型模式里使用最广泛的一个,几乎每个稍微复杂一点的 Java/C# 项目都能找到它的身影。但很多人把"new 一个对象的辅助方法"叫做工厂,这只是个"静态方法",离真正的工厂方法模式还差一点。这篇文章把工厂方法模式从动机讲到落地,讲清楚它和简单工厂、抽象工厂的差别,以及为什么它在依赖注入大行其道的今天仍然重要。 为什么需要工厂方法 看一段普通…- 0
- 0
-
抽象工厂模式完全指南:让一族产品保持配套的设计利器
工厂方法解决"一类产品的创建",抽象工厂解决"一族相关产品的创建"。听起来抽象,但落地很具体:你做跨平台 GUI 时,Mac 上要 Mac 风格的 Button、TextField、Checkbox,Windows 上要 Windows 风格的全部对应控件 —— 这些控件必须"配对",混用就是灾难。抽象工厂就是为这种"产品族要保…- 0
- 0
-
观察者模式的四种现代演化:从 EventEmitter 到响应式与 RxJS
观察者模式是最常被用、也最常被误用的设计模式。前端的事件监听、后端的消息总线、数据库的 trigger、Spring 的 ApplicationEvent、Vue/React 的响应式系统,本质都是观察者。这篇文章把它从概念讲到实现,再到三个高级变体(发布订阅、响应式、RxJS),让你以后看到任何"X 变了通知 Y"的需求,都能直接判断该用哪种。 问题的本质:解耦"事…- 2
- 0
设计模式
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!























