設計模式9——模板方法模式

長長的一生,總要勤勤懇懇,刻苦專研。把一件事情做到極致,不然,豈非白活了?

一、舉個栗子

在造房子的時候,地基、走線、水管都一樣,只有在建築的後期纔有加壁櫥、牀等裝飾物。

二、模式的結構

在這裏插入圖片描述

  • 定義一個抽象類:Day
    • 包含抽象出來的常用的方法(有實現)
    • 包含抽象方法,想要讓子類去實現的(沒有實現)
    • 【重要】爲了惡意操作,就把模板方法前面加上 final關鍵字

三、實例程序

我這裏就模擬一個人從起牀到睡覺的一天。例子參考:模板方法模式:例子來源

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

四、優點

  • 封裝部分不變,擴展部分可變
  • 提取公共代碼,便於維護
  • 行爲由父類控制,子類實現

五、缺點

每一個不同的實現都需要一個子類來實現,導致類的數量增加。

參考並感謝

[1] http://www.runoob.com/design-pattern/template-pattern.html
[2] https://www.cnblogs.com/chenpi/p/5217430.html