模板方法模式

2021-07-15 23:09:24 字數 1125 閱讀 6225

一、什麼是模板方法模式?

模板方法模式是類的行為模式。準備乙個抽象類,將部分邏輯以具體方法以及具體建構函式的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。這就是模板方法模式的用意。

涉及到的角色:

抽象類(abstractclass):實現了模板方法,定義了演算法的骨架。

具體類(concreteclass):實現抽象類中的抽象方法,已完成完整的演算法。 類圖

**類:

abstractclass : 抽象類,定義並實現乙個模板方法。這個模板方法定義了演算法的骨架,而邏輯的組成步驟在相應的抽象操作中,推遲到子類去實現。頂級邏輯也有可能呼叫一些具體方法

abstract class abstractclass

}concreteclass : 實現實現父類所定義的乙個或多個抽象方法。

class concreteclassa extends abstractclass

@override

public void primitiveoperation2()

}class concreteclassb extends abstractclass

@override

public void primitiveoperation2()    

} 測試**

public class templatemethodpattern

}二、模板方法模式優缺點

1、模板方法模式通過把不變的行為搬移到超類,去除了子類中的重複**。

2、子類實現演算法的某些細節,有助於演算法的擴充套件。

3、通過乙個父類呼叫子類實現的操作,通過子類擴充套件增加新的行為,符合「開放-封閉原則」。

4、每個不同的實現都需要定義乙個子類,這會導致類的個數的增加,設計更加抽象。

三、使用場景

模板方法可以用於一次性實現乙個演算法的不變的部分,並將可變的部分留給子類去實現;子類的公共**部分應該被提煉到父類中去寫好,防止**重複編寫;控制子類的擴充套件,模板方法只允許在特定點呼叫鉤子函式,這樣就只允許在這些點進行擴充套件。

模板方法模式

有這樣乙個場景 乙個演算法或流程,它的步驟以及步驟之間的順序是固定的,但具體的某一步可能有不同的實現。對於這麼乙個場景,可以建立多個類,各個類實現不同的實現,但是這樣的缺點是 易錯 難改,易錯 應為步驟和順序是固定的,而且在每個類中都要寫一遍,程式設計師怎有心情不好的時候,就有可能把其中某一步給寫錯...

模板方法模式

模板方法模式 定義乙個演算法框架,將裡面的操作步驟推遲到子類中去執行,這樣使得子類不用改變框架,只需改變某些操作步驟方法 ifndef test h define test h include include using namespace std class test virtual test v...

模板方法模式

模板方法模式 在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟。還可以使用鉤子對可選部分進行判斷。include include using namespace std class caffeinebeverage ...