模板方法模式

聲明 本文內容屬於《Head First 設計模式》閱讀筆記,文中涉及到的知識案例等直接或間接來源於該書。《Head First 設計模式》通過有趣的圖表+文字的形式,讓人自然學習設計模式,非常棒推薦閱讀

模板方法模式概念

        在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟


案例(輔助理解)

情景說明

        現在有咖啡和茶這兩種飲料。其中準備咖啡的步驟是①把水煮沸、②用沸水沖泡咖啡、③把咖啡倒進杯子、④加糖和牛奶;準備茶的步驟是①把水煮沸、②用沸水浸泡茶葉、③把咖啡茶倒進杯子、④加檸檬。

不使用模板方法的實現

  • 咖啡類:
    在這裏插入圖片描述
  • 茶類:
    在這裏插入圖片描述

使用模板方法的實現

說明 從情景說明中可以發現,不管是茶葉還是咖啡,它們的第①步、第③步幾乎是一模一樣的,可以抽取出來,放在父類中;第①步、第③步不同,那麼可以將這兩步交給具體的子類去實現。

  • 模板方法所在的抽象父類:
    在這裏插入圖片描述

  • 咖啡子類:
    在這裏插入圖片描述

  • 茶子類:
    在這裏插入圖片描述

  • 測試一下:

    1. 測試代碼:
      在這裏插入圖片描述

    2. 運行main方法,控制檯輸出:
      在這裏插入圖片描述


模板方法的簡單拓展(基於上面的案例)

        模板方法模式使用非常廣,尤其是在架構走向方面。模板方法模式的變形也很多,有的容易被認出來,有的就需要對代碼認知敏銳的開人人員才能快速認出來,所以很多時候我們在不知不覺間就使用了模板方法模式。下面基於上面的案例,簡單拓展一下上面的模板方法
在這裏插入圖片描述


模板方法模式學習完畢 !


^_^ 如有不當之處,歡迎指正

^_^ 參考資料
        《Head First 設計模式》
Eric Freeman & Elisabeth Freeman with Kathy Sierra & Bert Bates著,O’Reilly Taiwan公司譯,UMLChina改編

^_^ 測試代碼託管鏈接
         https://github.com/JustryDeng…DesignPattern

^_^ 本文已經被收錄進《程序員成長筆記(六)》,筆者JustryDeng

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章