定義:
定義一個算法的步驟架構,而将一部分功能延遲到子類,而使得子類不用改變算法的結構即可改變某些特定的步驟。
類型:
行為型模式
類圖:

由抽象方法定義算法的流程,具體的實作交給子類,完成特定的相關步驟。
模闆方法模式的結構:
由一個抽象類和一個或一組實作類組成,抽象類中的方法分為3種:
抽象方法:父類中隻聲明,不加以實作,隻定義其規範
模闆方法:由抽象類聲明并加以實作,一般來說模闆方法調用抽象方法來完成主要的邏輯。模闆方法大都是final類型,指明父類的模闆方法不能被重寫
鈎子方法:由抽象類聲明加以實作,但子類可以擴充,通過擴充鈎子方法來影響模闆方法的邏輯。
模闆方法模式的總結:
優點:
容易擴充:模闆方法不易改變,抽象方法容易改變,通過增加實作類的方法實作功能的擴充。符合開閉原則(對拓展開放,對修改關閉 OCP)
便于維護:模闆方法,主要邏輯相同,若不使用模闆方法設計模式,這些代碼零散的分散到不同的類中,不利于維護。
比較靈活:因為有鈎子方法,子類的實作可以影響到父類的,但違反了裡氏替換原則(LSP)。
缺點:
每個不同的實作都需要定義一個子類,這會導緻類的個數的增加,設計更加抽象。
場景: