定義: 定義一個操作中的算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟
類圖
優缺點
優:
1. 封裝不變部分,擴展可變部分
2. 提取公共部分代碼,便於維護
3. 行爲由父類控制,子類實現
缺:
根據習慣,抽象類負責聲明最抽象,最一般的事務屬性方法,實現類完成具體的事物屬性和方法,但模板方法模式卻顛倒了,抽象類定義了部分抽象方法,由子類實現,子類執行的結果影響了父類的結果,即子類對父類產生了影響。
使用場景
1. 多個子類有公有的方法,並且邏輯基本相同時
2. 重要複雜的算法,可以把核心算法設計爲模板方法
3. 重構時,將相同代碼抽取到父類中
注意事項
模板方法中經常出現的一個術語,鉤子方法。它是指在抽象類中某方法的返回值影響了模板方法的執行結果,則該方法被稱爲鉤子方法