Template Method(模板方法)模式

1. 意图

定义一个操作中的算法的骨架. 而将一些步骤延迟到子类中.
它使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.

2. 动机

Template Method(模板方法)模式


3. 适用性

一次性实现一个算法的不变部分. 并将可变部分的行为留给子类去实现.
各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复.
控制子类扩展. 模板方法只在特定点调用"hook"操作.只允许子类扩展这些地方.

4. 结构图

Template Method(模板方法)模式


5. 参与者

AbstractClass(抽象类)
    ----定义抽象的原语操作(Primitive operation).具体的子类将重新定义这些原语操作.
    ----实现一个模板方法.定义算法的骨架. 在模板方法里会调用原语操作.
ConcreteClass(具体类)
    ----实现原语操作以完成算法中与特定子类相关的步骤.