設計模式-模板方法模式

抽象類把部分業務邏輯用具體方法具體實現,或者構造方法里面實現,而把其他需要子類來完成的方法設置為抽象方法,迫使子類務必實現。每種子類都可以以不同的方式進行具體實現,這就是模板方法模式。

先來看下 UML 的類圖,比較簡單

這里的抽象類就是抽象模板類,定義一個或者多個抽象方法,迫使子類來完成。同時定義一個模板方法,該方法一般情況下是一個具體方法,給出模板方法的執行過程,里面調用抽象方法。

具體的實現子類是把抽象類里面務必要實現的方法進行具體實現,成為父級模板方法里面的組成部分。

看下具體代碼:
首先是抽象模板類

public abstract class AbstractTemplate {

    //模板方法
    public void templete(){
        first();
        second();
        third();
    }
    
    //下面三個抽象方法需要子類來具體實現
    public abstract void first();
    
    public abstract void second();
    
    public abstract void third();
    
}

接下來看具體實現,這個具體類是把大象裝進冰箱的步驟

public class ConcreteTemplete extends AbstractTemplate{

    @Override
    public void first() {
        System.out.println("第一步開啟冰箱");
    }

    @Override
    public void second() {
        System.out.println("第二步把大象塞進去");
    }

    @Override
    public void third() {
        System.out.println("第三步關閉冰箱");
    }

}

測試下

public class Client {
    public static void main(String[] args) {
        AbstractTemplate template=new ConcreteTemplete();
        template.templete();
    }
}

幾點經驗:
1、模板方法模式把復用代碼集中到父類,子類可以直接調用;
2、抽象的父類可以級聯,進行有效的復用部分代碼;
3、一般和生命周期(生命周期一般會有幾個階段)有關的東西可以考慮該模式

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容