模板 Template 模式

2021-07-16 04:54:56 字數 1162 閱讀 1014

模板(template)模式

模板模式是類的行為模式。

1.定義:定義乙個操作中演算法的骨架(或稱為頂級邏輯),將一些步驟(或稱為基本方法)的執行延遲到其子類中.

2.模板模式與繼承

模板方法估計恰當地使用繼承。此模式可以用來改寫一些擁有相同功能的相關的類,將可復用的一般性行為**移到基類裡面,而把特殊化的行為**移到子類裡面。熟悉模板方法模式是重新學習繼承的開始。

3.模板模式中的方法

1)模板方法:必須由抽象類實現,該方法是乙個頂級邏輯,呼叫任意多個基本方法。子類不應該修改該方法

2)基本方法:模板方法所呼叫的方法,有可細分為抽象方法,具體方法,鉤子方法

抽象方法:強迫子類重寫的

具體方法:不需要子類重寫的,最好宣告為final

鉤子方法:子類可以重寫的,一般是個空方法(鉤子方法的命名應該以do開頭,這是乙個通用規範)

補充:模板模式的設計理念是儘量減少必須由子類置換掉的基本方法的數量(可以理解為儘量減少抽象方法和鉤子方法的數量。)

4.重構的原則

總的原則:行為上移,狀態下移(抽象類中的具體方法應該盡量多,而成員變數應該盡量少)

1)應當根據行為而不是狀態定義乙個類

2)在實現行為時,應該盡量用取值方法獲取成員變數,而不是直接應用成員變數

3)給操作劃分層次。乙個類的行為應當放到乙個小組核心方法裡面,這些方法可以很方便地在子類中置換

4)將狀態的確認推遲到子類中去。

5.使用模板模式,用多型取代條件轉移(也可以使用策略模式)

6.問題:模板模式和策略模式有什麼區別?

補充:個人認為這個模式比較好理解,而且在實際程式設計中是十分常用。雖然如此,但是學習這個模式的過程中,我還是有許多收穫的,主要是加深了對繼承的理解,對oo的核心思想有了新的認識,就像閻博士說的「熟悉模扳方法模式便成為乙個重新學習繼承的好地方」

模板模式:原理為:子類物件的方法覆蓋了父類的方法(父類物件呼叫子類方法)。

策略模式:確定操作的方法和策略,策略的具體實現行為不同。通過組合實現。原理就是:組合大於繼承,實現更大的靈活性。

例子:類載入,dao實現對object的增刪改查。

適用的範圍:許多應用的實現有許多公共的部分,但細節有差異。

1.從一張資料表,生成許多統計報表。

2.severlet物件service方法中doget,dopost方法。

Template模板模式

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式 優缺點優點 1 封裝不變部分,擴充套件可變部分。2 提取公共 便於維護。3 行為由父類控制,子類實現。缺...

模板模式(Template)

1 作用 做一件是的方法很多,但做這件都可以歸納為幾個步驟。這個時候可以使用模板模式,在模板類中,定義做事的步驟,將多種實現做事的細節延遲到子類中去實現。即 定義乙個操作中的演算法的骨架 模板函式 而將一些步驟延遲到子類中 基本函式 模板方法使得子類可以不改變乙個演算法的結構 模板函式 即可重定義該...

設計模式 模板模式(Template)

定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟 定義了乙個或多個抽象操作,以便讓子類實現,這些操作叫做基本操作 定義並實現了乙個模板方法,這個模板方法一般是乙個具體方法,它給出了乙個頂級邏輯的骨架,而邏輯的組成步驟在相應的抽...