定义
在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
简单点说,就是将相同的算法封装起来,将不同的部分抽象成抽象方法,由子类来具体实现,将相同的部分抽取出来,在父类实现好,这部分代码对子类透明。
实现
进阶
我们还可以在父类定义一些钩子方法,给予默认的实现,子类可以通过重写这些钩子方法决定特殊的方法执行,甚至动态决定模板方法中子方法的具体实现顺序。
点评
模板方法模式是重构代码的常用范式,当多个类中累赘书写了相同实现的时候,可以考虑将多个类抽取出一个父类,相同代码在父类实现。