1. 程式人生 > 其它 >【設計模式學習筆記】模板模式

【設計模式學習筆記】模板模式

模板模式

  • 解決的問題
    複用和擴充套件
    複用:將不變的邏輯放到父類的模板方法裡,可變的邏輯放到子類中實現。然後統一呼叫父類的模板方法去執行。也就是說所有的子類可以複用父類中的模板方法。
    擴充套件(框架的擴充套件性):類似於控制反轉。
    控制反轉:抽象出一個類,類裡面一部分是固定的邏輯,一部分是介面,留給子類實現。不管有多少子類基於這個類去實現,最後都是通過抽象類裡的固定邏輯去執行。

  • 定義
    在一個方法中定義一個整體的框架,將框架中的某些步驟放到子類中實現。子類可以在不改變框架結構的情況下,重新定義某些步驟的實現。

  • 實現
    建立一個抽象類,在類裡面定義一個模板方法(設為final,子類不可重寫),方法裡編寫呼叫其他方法的邏輯。然後定義幾個抽象方法,子類可以重寫。
    建立N個子類,繼承自抽象類,在子類裡重寫抽象類裡的抽象方法。
    然後呼叫的時候,可以通過子類建立例項,呼叫父類的模板方法。

  • 問題
    如果在一個抽象類裡,有兩個以上的模板方法,並且有很多的抽象方法必須要子類實現。但是當僅用其中一個模板方法時,需要的抽象方法不多。如何解決每個子類繼承自該抽象類必須重寫所有抽象方法的問題?
    幾個思路,不一定對:
    (1)建立一個介面卡類繼承自父類,實現所有抽象方法。然後子類繼承自這個介面卡類。重寫自己所需的抽象方法。
    (2)拆成N個以上類。