摘要: 本文是【GoF设计模式】系列第23篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要访问者模式? 假设一个文档系统里有段落、图片、表格三类元素,要导出 HTML 和 Markdown 两种格式。最直接的写法是把导出逻辑塞进每个元素类: class Paragraph { String toHtm 阅读全文
posted @ 2026-07-23 22:16 咖啡八杯 阅读(20) 评论(0) 推荐(0)
摘要: []> 本文是【GoF设计模式】系列第22篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要解释器模式? 假设营销系统要判断用户是否符合优惠活动资格,规则是"用户年龄 > 18 且 积分 > 100"。最直接的写法是 if-else: public boolean check(User user 阅读全文
posted @ 2026-07-21 23:27 咖啡八杯 阅读(119) 评论(0) 推荐(1)
摘要: 本文是【GoF设计模式】系列第22篇的前置知识,更多内容欢迎关注公众号:咖啡八杯 前言 解释器模式是 GoF 23 种设计模式中公认比较难理解的一个。它的难不在代码本身,而在前置概念——文法和 AST(抽象语法树)。如果不先搞懂这两个概念,直接看解释器模式的代码会一头雾水。 本文从零开始,用数学表达 阅读全文
posted @ 2026-07-21 23:25 咖啡八杯 阅读(15) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第21篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要责任链模式? 假设要实现一个请假审批功能:1 天以内组长批,3 天以内经理批,7 天以内总监批,7 天以上总经理批。最直接的写法是在审批方法里堆一串 if-else: public void approve(Le 阅读全文
posted @ 2026-07-16 23:13 咖啡八杯 阅读(28) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第20篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要状态模式? 假设正在实现电商订单系统,订单有五种状态:待支付、已支付、已发货、已完成、已取消。每种状态下可执行的操作都不一样——待支付可以支付、可以取消;已发货只能确认收货;已完成不能再动。没有状态模式的时候,代 阅读全文
posted @ 2026-07-14 23:26 咖啡八杯 阅读(23) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第19篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要迭代器模式? 假设需要写一个"打印集合所有元素"的方法,业务里存在三种集合:数组、自定义链表、HashMap。没有统一的遍历接口时,客户端只能这么写: // 遍历数组:用下标 public void printA 阅读全文
posted @ 2026-07-09 22:09 咖啡八杯 阅读(11) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第18篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要模板方法模式? 假设正在做一个数据导出功能,需要支持 Excel、PDF、CSV 三种格式。每种格式的导出流程都是读数据 → 格式化 → 写文件 → 关闭资源,仅"格式化"这一步的实现不同。最直觉的写法是每个导出 阅读全文
posted @ 2026-07-07 22:12 咖啡八杯 阅读(17) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第17篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要备忘录模式? 假设正在做一个文本编辑器,需要支持 Ctrl+Z 撤销功能。最直觉的写法是每次修改前把整个 Editor 对象的内部字段抄一份出来放到栈里: class Editor { public String 阅读全文
posted @ 2026-07-02 21:55 咖啡八杯 阅读(143) 评论(0) 推荐(0)
摘要: 本文是【GoF设计模式】系列第15篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要中介者模式? 假设在设计一个智能家居系统,家里有空调、窗帘、灯三种设备。业务规则是:空调开启时自动关闭窗帘(避免冷气流失),窗帘关闭时自动开灯(补充采光)。 最直觉的写法是让设备之间直接互相调用: class A 阅读全文
posted @ 2026-06-30 23:30 咖啡八杯 阅读(134) 评论(0) 推荐(1)
摘要: 本文是【GoF设计模式】系列第15篇,更多内容欢迎关注公众号:咖啡八杯 前言 为什么需要命令模式? 想象一个文本编辑器的撤销功能:用户输入了一段文字,然后按 Ctrl+Z 撤销。最直觉的写法是在每个操作方法里保存历史状态: class TextEditor { private StringBuild 阅读全文
posted @ 2026-06-25 22:26 咖啡八杯 阅读(23) 评论(0) 推荐(0)