摘要: 本文是【GoF设计模式】系列第22篇的前置知识,更多内容欢迎关注公众号:咖啡八杯 前言 解释器模式是 GoF 23 种设计模式中公认比较难理解的一个。它的难不在代码本身,而在前置概念——文法和 AST(抽象语法树)。如果不先搞懂这两个概念,直接看解释器模式的代码会一头雾水。 本文从零开始,用数学表达 阅读全文
posted @ 2026-07-21 23:25 咖啡八杯 阅读(22) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第21篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要责任链模式? 假设要实现一个请假审批功能:1 天以内组长批,3 天以内经理批,7 天以内总监批,7 天以上总经理批。最直接的写法是在审批方法里堆一串 if-else: public void approve(Le 阅读全文
posted @ 2026-07-16 23:13 咖啡八杯 阅读(61) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第20篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要状态模式? 假设正在实现电商订单系统,订单有五种状态:待支付、已支付、已发货、已完成、已取消。每种状态下可执行的操作都不一样——待支付可以支付、可以取消;已发货只能确认收货;已完成不能再动。没有状态模式的时候,代 阅读全文
posted @ 2026-07-14 23:26 咖啡八杯 阅读(43) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第19篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要迭代器模式? 假设需要写一个"打印集合所有元素"的方法,业务里存在三种集合:数组、自定义链表、HashMap。没有统一的遍历接口时,客户端只能这么写: // 遍历数组:用下标 public void printA 阅读全文
posted @ 2026-07-09 22:09 咖啡八杯 阅读(30) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第18篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要模板方法模式? 假设正在做一个数据导出功能,需要支持 Excel、PDF、CSV 三种格式。每种格式的导出流程都是读数据 → 格式化 → 写文件 → 关闭资源,仅"格式化"这一步的实现不同。最直觉的写法是每个导出 阅读全文
posted @ 2026-07-07 22:12 咖啡八杯 阅读(35) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第17篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要备忘录模式? 假设正在做一个文本编辑器,需要支持 Ctrl+Z 撤销功能。最直觉的写法是每次修改前把整个 Editor 对象的内部字段抄一份出来放到栈里: class Editor { public String 阅读全文
posted @ 2026-07-02 21:55 咖啡八杯 阅读(156) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第15篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要中介者模式? 假设在设计一个智能家居系统,家里有空调、窗帘、灯三种设备。业务规则是:空调开启时自动关闭窗帘(避免冷气流失),窗帘关闭时自动开灯(补充采光)。 最直觉的写法是让设备之间直接互相调用: class A 阅读全文
posted @ 2026-06-30 23:30 咖啡八杯 阅读(144) 评论(0) 推荐(1)
摘要: 本文是【GoF设计模式】系列第15篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要命令模式? 想象一个文本编辑器的撤销功能:用户输入了一段文字,然后按 Ctrl+Z 撤销。最直觉的写法是在每个操作方法里保存历史状态: class TextEditor { private StringBuild 阅读全文
posted @ 2026-06-25 22:26 咖啡八杯 阅读(32) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第14篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要策略模式? 电商网站结算时常常要算优惠:新用户满减、不同等级会员打折、节日活动满减。最直觉的写法是把所有规则塞进一个方法里用 if-else 区分: class Cashier { public int calc 阅读全文
posted @ 2026-06-23 22:21 咖啡八杯 阅读(208) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第13篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要观察者模式? 假设在做一个气象监测系统,一个气象站(主题)负责采集温度、湿度、气压,多个展示面板(观察者)需要实时展示这些数据——一块在当前页面显示实时数值,一块画历史曲线图,还有一块做预警提示。 最直觉的写法是 阅读全文
posted @ 2026-06-18 23:00 咖啡八杯 阅读(43) 评论(0) 推荐(0)