1 引言
模板方法是一种基于继承的代码复用技术。顾名思义,模板方法模式,是父类已经写好了模板方法(abstract方法),子类按照这个模板去实现。具体表现为,当确定了某个功能的执行顺序,但是某些步骤的具体实现是未知的,或者是有多种实现方法,具体怎么实现与环境有关,这个时候就非常适合使用模板方法模式:在父类中写好需要调用的方法以及顺序,具体的实现交给子类。
2 思想
我们知道,基类的抽取是这样
而模板方式模式,则是在定义一些抽象方法,且按一定的顺序进行调用,子类则必须实现这些方法。即父类控制逻辑,子类实现具体算法。
3 举例说明
4 好处
- 提高代码复用性。
重用代码,父类封装好之后,每次使用时,子类只需要写很少的代码就可以了。 - 高扩展性。利用多态的特性,运行时选择一个子类,并执行完整的步骤,具有很大的灵活性和扩展性。
5 注意点
为了子类不改变父类方法,真正供外部调用的方法,在父类中设置成final类型。
6 模式结构图
7 扩展
钩子方法:在父类中声明(可以提供默认实现或者为abstract类型),子类可以复写或者采用默认实现,用来反向控制父类方法的执行。