1.模板方法:定義一個操作中的算法骨架,而將一些步驟延遲到子類中。
模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟
處理某個流程的的代碼已經具備,但是其中某個結點的代碼暫時不能確定。
因此採用工廠方法模式,將這部分代碼實現轉移給子類完成,即處理步驟在父類中定義好,具體的實現延遲到子類中。
2.類圖:
3.代碼:
實例:購物---> 1.下單--->2.支付--->3.評價
public abstract class ShopTemplateMethod {
//模板方法中的業務處理邏輯
//1.下單
public void order() {
System.out.println("下訂單!");
}
//2.支付(留給子類實現,選擇不同的支付方式)
public abstract void pay();
//3.評價
public void evaluate() {
System.out.println("反饋評分");
}
//模板方法
public final void process() {
this.order();
this.pay();
this.evaluate();
}
}
public class WeiXin extends ShopTemplateMethod {
@Override
public void pay() {
System.out.println("微信支付");
}
}
public class ZhiFuBao extends ShopTemplateMethod {
@Override
public void pay() {
System.out.println("支付寶支付");
}
}
public class Client {
public static void main(String[] args) {
ShopTemplateMethod templateWeiXin = new WeiXin();
templateWeiXin.process();
ShopTemplateMethod templateZhiFuBao = new ZhiFuBao();
templateZhiFuBao.process();
}
}