定义:定义一个操作的算法骨架,而将一些步骤延迟到子类中,模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
代码:
package template_model;
/**
* @author naivor
* 模版方法模式-场景类
*/
public class TemplateModel {
public static void main(String[] args) {
Abstraction abstraction;
abstraction=new ConcreteA();
abstraction.templateMethord();
abstraction =new ConcreteB();
abstraction.templateMethord();
}
}
/**
*
* @author naivor
* 模版方法模式-抽象模版类
*/
abstract class Abstraction{
public abstract void operate1();
public abstract void operate2();
public abstract void operate3();
public void templateMethord(){
operate1();
operate2();
operate3();
//其他不变业务逻辑
}
}
/**
*
* @author naivor
* 模版方法模式-抽象模版子类A
*/
class ConcreteA extends Abstraction{
@Override
public void operate1() {
//ConcreteA的操作1业务逻辑
}
@Override
public void operate2() {
//ConcreteA的操作2业务逻辑
}
@Override
public void operate3() {
//ConcreteA的操作3业务逻辑
}
}
/**
*
* @author naivor
* 模版方法模式-抽象模版子类B
*/
class ConcreteB extends Abstraction{
@Override
public void operate1() {
//ConcreteB的操作1业务逻辑
}
@Override
public void operate2() {
//ConcreteB的操作2业务逻辑
}
@Override
public void operate3() {
//ConcreteB的操作3业务逻辑
}
}