15 模板模式 Template

2021-06-22 19:41:15 字數 1479 閱讀 4669

template模式:

template模式定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。我們既然是用了繼承,並且肯定這個繼承有意義,就應該要成為子類的模板,所有重複的**都應該要上公升到父類去,而不是讓每個子類都去重複。template模式實際上就是利用物件導向中多型的概念實現演算法實現細節和高層介面的松耦合。可以看到template模式採取的是繼承方式實現這一點的。

當我們要完成在某一細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同是,我們通常考慮用模板方法模式來處理。

通用的template模式的結構圖為:

下面是template模式的實現**:

#ifndef _template_h_

#define _template_h_

class abstractclass

;class concreteclass1:public abstractclass

;class concreteclass2:public abstractclass

;#endif //~templateh

#include "template.h"

#include using namespace std;

abstractclass::abstractclass()

abstractclass::~abstractclass()

void abstractclass::templatemethod()

concreteclass1::concreteclass1()

concreteclass1::~concreteclass1()

void concreteclass1::primitiveoperation1()

下面是template模式和strategy模式的優缺點對比。

template模式(繼承)的優點:

1)易於修改和擴充套件那些被復用的實現。

template模式(繼承)的缺點:

1)破壞了封裝性,繼承中父類的實現細節暴露給子類了;

2)「白盒」復用,原因在1)中;

3)當父類的實現更改時,其所有子類將不得不隨之改變

4)從父類繼承而來的實現在執行期間不能改變(編譯期間就已經確定了)。

strategy模式(組合)的優點:

1)「黑盒」復用,因為被包含物件的內部細節對外是不可見的;

2)封裝性好,原因為1);

3)實現和抽象的依賴性很小(組合物件和被組合物件之間的依賴性小);

4)可以在執行期間動態定義實現(通過乙個指向相同型別的指標,典型的是抽象基類的指標)。

strategy模式(組合)的缺點:

1)系統中物件過多。

模板 Template 模式

模板 template 模式 模板模式是類的行為模式。1.定義 定義乙個操作中演算法的骨架 或稱為頂級邏輯 將一些步驟 或稱為基本方法 的執行延遲到其子類中.2.模板模式與繼承 模板方法估計恰當地使用繼承。此模式可以用來改寫一些擁有相同功能的相關的類,將可復用的一般性行為 移到基類裡面,而把特殊化的...

Template模板模式

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

模板模式(Template)

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