第2篇:模板方法模式核心:好莱坞原则
摘要:模板方法模式的核心角色有哪些?什么是好莱坞原则?钩子方法有什么用?本文用一张UML图和三个角色表,帮你三分钟掌握模板方法模式的结构与运作机制。
本文是《Java 23 种设计模式:从踩坑到精通》模板方法模式长文的扩充短文第2篇,帮助你碎片化掌握核心知识点。
上一篇我们从泡茶和冲咖啡的场景认识了模板方法模式的核心思想:固定骨架,填充细节。那这个模式到底长什么样?今天我们来拆解它的三个核心角色和一条黄金法则。
UML 结构速览
三个角色各司其职
| 角色 | 职责 | 举例 |
|---|---|---|
| 抽象父类 | 定义算法骨架(模板方法),声明抽象方法和钩子方法 | BeverageMaker |
| 具体子类 | 实现抽象方法,可选重写钩子方法 | TeaMaker, CoffeeMaker |
| 模板方法 | 通常声明为 final,防止子类篡改流程 |
makeBeverage() |
核心机制:好莱坞原则
**"Don't call us, we'll call you."**
(别打电话给我们,我们会打给你。)
父类控制整体流程,在合适的时机回调子类的方法。子类永远不需要主动调用父类的模板方法,父类会在流程走到相应步骤时自动调用子类的实现。
钩子方法:可选的干预点
钩子方法是在父类中定义的、带有默认实现的方法,子类可以选择性地重写它来控制流程的分支。例如:
java
protected boolean wantCondiments() {
return true; // 默认加调料
}
咖啡子类重写为返回 false,就能跳过加调料步骤。钩子的存在让模板方法模式更加灵活,不会因为"必须实现"而变得僵硬。
一句话总结:父类定流程,子类填细节,钩子控开关。
📖 完整长文入口 :本文是模板方法模式扩充系列的第2篇。如果你想一次性阅读完整内容(含UML、完整代码、框架应用、面试追问等),请查看原长文:
👉 《Java 23 种设计模式:从踩坑到精通 | 模板方法模式》
🔗 系列导航:
- 上一篇:泡茶和冲咖啡的代码为什么不能复用?
- 下一篇:手写一个饮品制作模板(附代码)
- 返回扩充系列目录 🔥 订阅本专栏,不错过每一篇
- 原系列总目录🔥 订阅本专栏,不错过每一篇