模板方法差不多是Java设计模式中除单例之外的另一种非常简单也是我们在写程序时非常常用的一种方法了。以至于当你看到模板方法的设计模式时你会感觉到,这不是我在程序中经常用到的方法么。
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类不可以改变一个算法的结构即可重定义该算法的某些特定步骤。
下面是我总结的模板方法中具体的代码实现通用框架
1:抽象的模板类:
package template; public abstract class AbstractClass { protected abstract void method1(); protected abstract void method2(); public void templateedMethod(){ this.method1(); this.method2(); } }
2:具体的模板类:
package template; public class ConcretClass extends AbstractClass{ @Override protected void method1() { // TODO Auto-generated method stub } @Override protected void method2() { // TODO Auto-generated method stub } }
package template; public class ConcretClass1 extends AbstractClass{ @Override protected void method1() { // TODO Auto-generated method stub } @Override protected void method2() { // TODO Auto-generated method stub } }
3:场景类:
package template; public class Client { public static void main(String[] args) { AbstractClass class1 = new ConcretClass(); AbstractClass class2 = new ConcretClass1(); class1.templateedMethod(); class2.templateedMethod(); } }
模板方法具有以下优点:
1:提取公共部分代码易于维护。
2: 由父类控制,子类实现
3:封装不可变部分,扩展可变部分