模板方法模式
文档地址:《设计模式之禅》
第10章:模板方法模式( Template Method Pattern)
切入故事:辉煌工程——制造悍马
定义: Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm'sstructure.(定义一个操作中的算法的框架, 而将一些步骤延迟到子类中。 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 )
通用类图:
优点:
1: 封装不变部分, 扩展可变部分
2: 提取公共部分代码, 便于维护
3: 行为由父类控制, 子类实现
缺点: 代码阅读的难度增加
使用场景:
1: 多个子类有公有的方法, 并且逻辑基本相同时。
2: 重要、 复杂的算法, 可以把核心算法设计为模板方法, 周边的相关细节功能则由各个子类实现。
3: 重构时, 模板方法模式是一个经常使用的模式, 把相同的代码抽取到父类中, 然后通过钩子函数约束其行为。
个人总结:相同的逻辑或相似但可以使用钩子函数约束的逻辑 由父类通过模板方法实现(尽量使用final修饰),逻辑的具体实现父类声明基本方法(尽量使用 protected修饰)由具体子类实现