Java設計模式(六)之模板模式(Template)

        TemplateMethod是指在抽象類或者接口中定義一系列操作的框架,而將具體的操作交給子類來實現,使得子類可以在不改變框架的結構下可重定義框架的具體步驟細節。比如Runnable接口中的run方法就可以看成是一種模板方法,該方法定義了線程運行的框架,run中具體執行什麼樣的邏輯,交給子類來實現。下面以客戶去銀行辦理業務爲例介紹。

客戶去銀行辦理業務通常由如下幾個步驟:

(1)取號排隊;

(2)辦理業務;

(3)評價服務;

/**
 * Created by leboop on 2020/5/24.
 */
public abstract class BankTemplate {
    // 取號排隊
    public abstract void takeLineup();

    // 辦理業務
    public abstract void handleBuss();

    //    服務評價
    public abstract void evaluateService();

    //模板方法
    public void process() {
        takeLineup();
        handleBuss();
        evaluateService();
    }

}
/**
 * Created by leboop on 2020/5/24.
 */
public class Deposit extends BankTemplate {
    @Override
    public void takeLineup() {
        System.out.println("個人業務取號排隊");
    }

    @Override
    public void handleBuss() {
        System.out.println("存款1000萬!");
    }

    @Override
    public void evaluateService() {
        System.out.println("服務 very good!");
    }
}

客戶端代碼如下:

/**
 * Created by leboop on 2020/5/24.
 */
public class TemplateMain {
    public static void main(String[] args) {
        BankTemplate deposit= new Deposit();
        deposit.process();
    }
}

 輸出結果如下:

個人業務取號排隊
存款1000萬!
服務 very good!

現在有客戶過來辦理取款業務,

/**
 * Created by leboop on 2020/5/24.
 */
public class Withdrawal extends BankTemplate{
    @Override
    public void takeLineup() {
        System.out.println("取個人取款業務號排隊……");
    }

    @Override
    public void handleBuss() {
        System.out.println("取款1個億!");
    }

    @Override
    public void evaluateService() {
        System.out.println("服務 very nice!");
    }
}

 客戶端代碼如下:

/**
 * Created by leboop on 2020/5/24.
 */
public class TemplateMain {
    public static void main(String[] args) {
        BankTemplate withdrawal=new Withdrawal();
        withdrawal.process();
    }
}

輸出結果:

取個人取款業務號排隊……
取款1個億!
服務 very nice!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章