模板模式
1 /** 2 * 封装算法 3 * 模板方法模式: 4 * 在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中。模板方法使得子类 5 * 可以在不改变算法结构的情况下,重新定义算法中的某些步骤 6 */ 7 abstract class AbstractClass{ 8 9 final void templateMethod(){ 10 primitiveOperation1(); 11 primitiveOperation2(); 12 concreteOperarion(); 13 hook(); 14 } 15 16 abstract void primitiveOperation1();//由具体的子类实现 17 18 abstract void primitiveOperation2(); 19 20 final void concreteOperation(){ // 子类无法覆盖,被模板方法直接使用或被子类使用 21 22 } 23 24 void hook(){} // 由子类决定要不要覆盖 25 } 26 /** 27 * 好莱坞原则:别调用(打电话给)我们,我们会调用(打电话给)你 28 */