設計模式筆記 Template模式

2021-07-12 05:05:05 字數 934 閱讀 5618

模板模式,邏輯很清晰,容易實現,用的也多!需求情景就是:對乙個業務邏輯/演算法實現,在不同物件中有不同的細節實現,但是邏輯的框架是相同的!就是說它們的操作步驟/介面是相同的,以繼承的方式實現!看下圖uml就明白了:到公司應聘,公司給每人發乙個簡歷表,讓大家填,而不是直接用每個人自己帶的簡歷!

有幾點:

1. 將邏輯框架放在抽象基類中,並定義好細節的介面,子類中實現細節! 這和strategy模式不同,後者是將邏輯封裝到乙個類中,採取組合的方式解決這個問題!見後一篇!

2. 上圖中fillresume()函式裡實現的就是邏輯的框架,其中肯定呼叫了三個set***函式!

3. 三個set***()函式都是protect成員, 經public繼承後都只提供給模板方法呼叫,單獨對外開放沒實際意義!

上面這種設計原則被稱為依賴倒置(dip, dependency inversion principles):父類呼叫子類的操作,子類介面實現父類宣告的介面!控制權在父類,子類反而要依賴高層模組!

模板模式的缺點:假設有另乙個resume抽象基類的變體anotherresume,它們通用演算法不一樣,但set***實現有些是一樣的,想復用resume子類的具體演算法實現就不可能了,因為人家細節實現是靠繼承完成的,它沒有繼承resume。 這個問題,也可以通過strategy模式的組合方式解決!

//簡歷

class resume

virtual void seteducation() {}

virtual void setworkexp() {}

public:

void fillresume() };

class resumea: public resume

設計模式學習筆記 模板 Template 模式

設計模式 設計模式,模板模式,template,模板方法 模板模式中的角色 模板模式可以很簡單的理解為,通過同乙個模具倒出來的模型。形狀上是一樣的,但是其上的花紋,紋理等卻可能完全不一樣。這裡的模板模式,特指template method模板方法模式。其原理為父類制定好規範 待實現的方法和模板方法。...

設計模式 Template模式

在物件導向系統的分析與設計過程中經常會遇到這樣一種情況 乙個流程可以分為a,b,c 多個步驟,但在具體的步驟中可能會有不同的情況出現,這時就template模式就非常有用 class p object defa pass defb pass defoperate a b class sub p de...

設計模式 模板模式(Template)

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