模版方法:
定义一个操作中的算法框架,而将一些步骤细节延迟到子类中实现。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
个人理解:模版方法将子类中的共有算法逻辑抽取出来定义在抽象类中,以便实现逻辑的统一管理;或者从另一个角度说,模版模式将一个规模比较大的算法分几步走,各个子逻辑由继承类实现,而抽象类定义接口和逻辑步骤。
好处:1、封装不变部分,扩展可变部分;2、提取公共部分代码,便于维护。3、行为由父类控制,子类实现
模版:
/**
* 模版模式抽象类,将子类共有实现逻辑封装
* @author Administrator
*
*/
public abstract class AbstractClass {
protected abstract void doSomething();
protected abstract void doAnything();
//模版方法
public void templateMethod(){
/*
* 调用基本方法
*/
this.doSomething();
this.doAnything();
}
}
public class ConcreteClass1 extends AbstractClass{
@Override
protected void doAnything() {
//实现基本方法一
}
@Override
protected void doSomething() {
//实现基本方法二
}
}
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
AbstractClass class1 = new ConcreteClass1();
class1.templateMethod();//调用模版方法
}
}