定義:定義一個操作的算法骨架,而將一些步驟延遲到子類中,模版方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
代碼:
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業務邏輯
}
}