模板模式即在實現之前定義一個可以作爲模板的類。每個實現只需要在這個模板中填寫自己特殊的實現即可。舉個生活中的實例來說:每個人去餐館吃飯要經過以下過;定位餐館 -> 點菜 -> 就餐 -> 付錢。這一系列的操作可以放置在一個模板中,然後選擇具體的餐館,點什麼菜等就可以有其不同的具體實施方式。這裏給出 java 的模板設計
public abstract class Eating {
public void process() {
System.out.println(“first,let’s beging to have supper”);
ponitToPlace();
System.out.println(“second, order”);
order();
System.out.println(“third, everyont hava a happy eating”);
eating();
System.out.println(“last, who hava the pay must do”);
pay();
}
protected abstract void pointToPlace();
protected abstract void order();
protected abstract void eating();
protected abstract void pay();
}
每個不同的團隊或人有不同的地方去享受他們的午餐或晚餐過程,每個團隊或人只需要繼承 Eating 類,給出自己每一步的具體實現。去什麼地方,點什麼菜,如何吃,誰付錢?
public class MyEating extends Eating {
protected void pointToPlace() { System.out.println(“KFC Is my choice”);}
protected void order(){ System.out.println(“I want to hava a hamburger”);}
protected void eating() {System.out.println(“good eating”);}
protected void pay(){ System.out.println(“no one but me can pay”)}
}
許多開發架構或者框架裏面會用到模板模式:比如用戶調用具體業務邏輯需要進行以下處理:登錄驗證 -> 參數驗證 -> 權限驗證 -> 業務調用。由於業務調用作爲主要的實現,我們可以將其他三部分放到模板模式裏面進行順序處理調用。