模板方法类提供算法的框架,子类通过重写可以修改算法中特定的步骤。
- protected abstractMethod():基本方法,由子类实现
- public final templateMethod():模板方法,final类型防止修改
- protected hookMethod():钩子方法,子类复写该方法,通过其返回值,可改变模板方法的执行逻辑
模板方法模式优点:
- 封装不变部分,扩展可变部分
- 提供公共部分代码,便于维护(抽象是所有子类的共性封装)
- 父类做出行为规划,子类实现行为细节,子类可以通过钩子方法对行为规则做出一定调整