聲明: 本文
內容屬於《Head First 設計模式》閱讀筆記
,文中涉及到的知識案例等直接或間接來源於該書。《Head First 設計模式》
通過有趣的圖表+文字的形式,讓人自然學習設計模式,非常棒
,推薦閱讀
。
模板方法模式概念:
在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。
案例(輔助理解):
情景說明:
現在有咖啡和茶這兩種飲料。其中準備咖啡的步驟是①把水煮沸、②用沸水沖泡咖啡、③把咖啡倒進杯子、④加糖和牛奶;準備茶的步驟是①把水煮沸、②用沸水浸泡茶葉、③把咖啡茶倒進杯子、④加檸檬。
不使用模板方法的實現:
- 咖啡類:
- 茶類:
使用模板方法的實現:
說明: 從情景說明中可以發現,不管是茶葉還是咖啡,它們的第①步、第③步幾乎是一模一樣的,可以抽取出來,放在父類中;第①步、第③步不同,那麼可以將這兩步交給具體的子類去實現。
-
模板方法所在的抽象父類:
-
咖啡子類:
-
茶子類:
-
測試一下:
-
測試代碼:
-
運行main方法,控制檯輸出:
-
模板方法的簡單拓展(基於上面的案例):
模板方法模式使用非常廣,尤其是在架構走向方面。模板方法模式的變形也很多,有的容易被認出來,有的就需要對代碼認知敏銳的開人人員才能快速認出來,所以很多時候我們在不知不覺間就使用了模板方法模式。下面基於上面的案例,簡單拓展一下上面的模板方法
:
模板方法模式學習完畢 !
^_^ 如有不當之處,歡迎指正
^_^ 參考資料
《Head First 設計模式》Eric Freeman & Elisabeth Freeman with Kathy Sierra & Bert Bates著,O’Reilly Taiwan公司譯,UMLChina改編
^_^ 測試代碼託管鏈接
https://github.com/JustryDeng…DesignPattern
^_^ 本文已經被收錄進《程序員成長筆記(六)》,筆者JustryDeng