1、意图
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2、适用性
(1)一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现
(2)各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
(3)控制子类扩展
3、参与者
(1)AbstractClass:定义抽象的原语操作,具体的子类将重定义它们以实现一个算法的各个步骤;实现一个模板方法,定义一个算法的骨架
(2)ConcreteClass:实现原语操作以完成算法中与特定子类相关的步骤
4、协作
ConcreteClass靠AbstractClass来实现算法中不变的步骤