模板方法要素:
1)抽象基类
基本方法:将共性的方法定为基本方法,在抽象基类中实现,定义为private
抽象方法:将非共性的方法定为抽象方法,延迟到子类实现,用protected
钩子方法:为增加模板灵活性,定义一个钩子方法,以方便子类实现或者不实现某些方法
Template方法:将上述三种方法汇总为一个模板方法,用final修饰,不能被子类覆写
2)具体子类
继承模板方法
实现抽象方法
覆写钩子方法
模板方法适用场景:
1)算法或者操作遵循相似的逻辑
2)重构时(把相同的代码抽取到父类中)
3)重要的、复杂的算法、核心算法设计为模板算法
模板方式模式特点:
1)优点
封装性好
复用性好
屏蔽细节
便于维护
2)缺点
继承