設計模式(8) 模板方法模式

2021-08-31 15:36:53 字數 881 閱讀 3326

1. 定義

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

2. 類圖及描述

圖 模板方法模式類圖

3. 應用場景及優缺點

模板方法模式中的方法:

模板方法:定義在abstractclass中,形成演算法的骨架

基本方法:

1. abstract method:由子類具體實現,完成具體的演算法步驟。

2. concrete method:抽象類實現的final方法,子類不能override。

3. hook method:提供預設的實現,子類可以在必要時進行擴充套件,鉤子簡化了子類的實現,它可以讓子類能夠有機會對模板方法中某些即將發生的(或剛剛發生的)步驟做出反應

適用性:

1. 一次性實現乙個演算法的不變的部分,並將可變的行為留給子類來實現。

2. 各子類中公共的行為應被提取出來並集中到乙個公共父類中以避免**重複。這是opdyke和johnson所描述過的「重分解以一般化」的乙個很好的例子。首先識別現有**中的不同之處,並且將不同之處分離為新的操作。最後,用乙個呼叫這些新的操作的模板方法來替換這些不同的**。

3. 控制子類擴充套件。模板方法只在特定點呼叫hook操作,這樣就只允許在這些點進行擴充套件。

HeadFirst 設計模式 8模板方法模式

模板方法模式 在乙個方法中定義乙個演算法的骨架,並將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。增加乙個hook 方法後 注意 此處的hook 鉤子 是一種被宣告在抽象類中的方法,但是只有空的或缺省的實現。hook 的存在可以讓子類能夠對演算法的...

設計模式 8 模板模式

今天我來全面總結一下android開發中最常用的設計模式 模板方法模式。模板方法模式.jpg 1.1 定義 定義乙個模板結構,將具體內容延遲到子類去實現。1.2 主要作用 在不改變模板結構的前提下在子類中重新定義模板中的內容。模板方法模式是基於 繼承 的 1.3 解決的問題 2.1 uml類圖 組成...

模板設計模式 設計模式 模板方法模式

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...