第1篇:泡茶和冲咖啡的代码为什么不能复用?
📅 2026/7/7 22:00:30
👁️ 阅读次数
📝 编程学习
第1篇:泡茶和冲咖啡的代码为什么不能复用?
摘要:泡茶和冲咖啡的代码几乎一样却不能复用?本文从生活场景切入,揭示模板方法模式如何通过固定骨架、填充细节来消除重复代码,并附上场景判断表,帮你快速决策何时使用。
本文是《Java 23 种设计模式:从踩坑到精通》模板方法模式长文的扩充短文第1篇,帮助你碎片化掌握核心知识点。
你有没有写过这样的代码?
泡茶:烧水 → 泡茶叶 → 倒入茶杯 → 加柠檬
冲咖啡:烧水 → 冲咖啡粉 → 倒入咖啡杯 → 加糖和牛奶
流程几乎一模一样,只是“泡什么”和“加什么”不一样。如果分别写两个类,烧水和倒杯的代码就要重复写两遍。更糟糕的是,如果某天需求变了——比如必须用 80℃ 的水——你就得把所有类都改一遍。如果再增加“泡枸杞”、“冲可可”,复制粘贴会让代码像滚雪球一样膨胀。
模板方法模式正是为此而生
它在父类中定义算法的骨架,将某些步骤延迟到子类中实现。子类可以在不改变算法整体结构的前提下,重新定义其中的某些步骤。
你的场景该不该用模板方法?
| 判断标准 | 是 → 用模板方法 | 否 → 用其他方式 |
|---|---|---|
| 多个类有完全相同的流程,仅部分步骤不同 | ✅ | ❌ |
| 需要控制流程的执行顺序,防止子类篡改 | ✅ | ❌ |
| 需要在父类中提供“钩子”让子类可选地干预流程 | ✅ | ❌ |
| 需要动态替换整个算法,而非仅修改部分步骤 | ❌ | 考虑策略模式 |
一句话总结:流程相同、细节不同 → 用模板方法模式,避免复制粘贴。
📖完整长文入口:本文是模板方法模式扩充系列的第1篇。如果你想一次性阅读完整内容(含UML、完整代码、框架应用、面试追问等),请查看原长文:
👉 《Java 23 种设计模式:从踩坑到精通 | 模板方法模式》
🔗系列导航:
- 返回扩充系列目录 🔥 订阅本专栏,不错过每一篇
- 下一篇:模板方法模式核心:好莱坞原则
- 原系列总目录🔥 订阅本专栏,不错过每一篇
编程学习
技术分享
实战经验