設計模式筆記 - 模板方法模式
分類
- 行為型
模式的目的(定義)
- 類似於工廠方法模式,將實例化過程延遲到子類執行;模板方法模式是把算法的一些步驟延遲到子類進行定義
- 算法的接口仍然在抽象的父類上,但是該接口實際調用了一些抽象方法
- 這些抽象方法的具體邏輯將由子類去定義
- 在這個基礎上,還可以在父類定義一個虛方法,作為一個Hook,用於讓子類控制算法的一些邏輯
- 首先這個方法提供一個默認實現,子類可重寫可不重寫
- 然後在某些算法步驟中,以該方法的返回值作為判斷條件
- 部分子類就可以重寫這個方法,提供不一樣的返回值
- 在這個基礎上,還可以在父類定義一個虛方法,作為一個Hook,用於讓子類控制算法的一些邏輯
使用場景例子
- 某些操作包含了一套固定的流程,但是某些步驟上,需要提供自定義空間的時候,就可以應用模板方法模式
- 排序的接口其實也是一個模板方法
- 排序的步驟一般都是先比較,然後交換元素;所以排序接口一般都容許用戶傳入一個比較方法
- 排序的接口其實也是一個模板方法
類圖

參考書目
- 《Head First Design Patterns》Eric Freeman, Elisabeth Robson, Kathy Sierra, Bert Bates