模板方法模式:在一个方法中定义了一个算法的骨架,其中一些步骤延迟到子类中实现

public abstract class Template {

   final void templateMethod(){

       step1();

       step2();

       hook();

   }

   final void step1(){

       //xxxx

   }

   void hook(){}

   abstract void step2();

}

其中算法执行顺序是固定的,step1已经实现且不能更改,step2必须由子类自行实现。Hook由子类自行决定是否覆盖。模板方法模式在实现框架的应用中很常见。策略方法和模板方法都可以封装算法,策略方法用组合,模板方法用继承。工厂方法是模板方法的特殊版本。