設計模式筆記 – 模板方法模式

分類

  • 行為型

模式的目的(定義)

  • 類似於工廠方法模式,將實例化過程延遲到子類執行;模板方法模式是把算法的一些步驟延遲到子類進行定義
    • 算法的接口仍然在抽象的父類上,但是該接口實際調用了一些抽象方法
    • 這些抽象方法的具體邏輯將由子類去定義
      • 在這個基礎上,還可以在父類定義一個虛方法,作為一個Hook,用於讓子類控制算法的一些邏輯
        •  首先這個方法提供一個默認實現,子類可重寫可不重寫
        • 然後在某些算法步驟中,以該方法的返回值作為判斷條件
        • 部分子類就可以重寫這個方法,提供不一樣的返回值

使用場景例子

  • 某些操作包含了一套固定的流程,但是某些步驟上,需要提供自定義空間的時候,就可以應用模板方法模式
    • 排序的接口其實也是一個模板方法
      • 排序的步驟一般都是先比較,然後交換元素;所以排序接口一般都容許用戶傳入一個比較方法

類圖

參考書目

  • 《Head First Design Patterns》Eric Freeman, Elisabeth Robson, Kathy Sierra, Bert Bates