首页 > 代码库 > 模板模式

模板模式

  模板模式(Template Method)是较为常见的设计模式之一。

  模板模式简言之就是将公共的方法抽取到超类中,需要子类要实现的方法设置为抽象方法,由子类去完成具体的实现。

       模板方式的类图如下所示:

  

  下面是一个模板模式的例子,首先是抽象类: 

abstract public class AbstractClass {    public void templateMethod() {        doOperation1();                doOperation2();                hookMethod();    }        protected abstract void doOperation1();        protected abstract void doOperation2();        public void hookMethod() { //private and final illegal    }}

  下面是子类的代码:

public class ConcreteClass extends AbstractClass {    public void doOperation1() {        System.out.println("doOperation1();");    }        public void doOperation2() {        System.out.println("doOperation2();");    }        @Override    public void hookMethod() {        System.out.println("This is a re-implemented hook method.");    }}

  测试代码:

public class Test {        public static void main(String [ ] args) {        AbstractClass ac = new ConcreteClass();        ac.templateMethod();    }    }输出:doOperation1();doOperation2();This is a re-implemented hook method.

  上面例子中的hookMethod方法也被称为钩子方法。

 

  模板方式中,子类可以实现父类中未实现的部分,但是却不能修改父类中的逻辑。

模板模式