标签:style blog http io ar color sp on div
模板模式(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方法也被称为钩子方法。
模板方式中,子类可以实现父类中未实现的部分,但是却不能修改父类中的逻辑。
标签:style blog http io ar color sp on div
原文地址:http://www.cnblogs.com/lnlvinso/p/4154362.html