模板方法模式(template method):定義乙個操作中的演算法的骨架,而將一些方法實現延遲到子類。模板方法使得子類可以不改變乙個演算法的結構即可以重定義該演算法的某些特定步驟。
通俗一點講,假設乙個類或者演算法實現需要呼叫函式f1、f2、f3,呼叫的順序確定,為f1,f2,f3,但是對於不同的類,不同的演算法,f1、f2、f3的實現過程會有不同;
那麼模板方法怎麼解決問題的呢?
首先,定義乙個函式將f1、f2、f3按確定的順序封裝起來,並將該函式定義為virtual 函式;其次,將函式f1、f2、f3定義為pure virtual,函式f1、f2、f3的具體實現過程由子類來完成;最後,基類由於定義pure virtual函式而成為抽象類,但是基類定義了演算法或者函式的呼叫過程(及程式框架),派生類繼承基類,實現pure virtual 函式f1、f2、f3從而完成,派生類都有相同的執行過程,但是每個過程的細節自己定義。
#include#includeusing namespace std;
class gamecharacter
;int gamecharacter::healthcalculate()
class evilbadguy : public gamecharacter
;void evilbadguy::calculate()
void evilbadguy::dobefore()
void evilbadguy::doafter()
class angel : public gamecharacter
;void angel::calculate()
void angel::dobefore()
void angel::doafter()
int main(int argc, char **argv)
模板方法模式 C 實現
模板方法模式,模板方法模式應該算是比較簡單容易理解的了。定義 定義乙個操作中的演算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。適用性 1 一次性實現乙個演算法的不變部分,並將可變的行為留給子類來實現。2 各子類中公共的行為應該被提取出...
C 模板方法模式實現
模板方法模式比較容易理解,是有效地提高了 地復用率,在父類模板中定義乙個大的演算法架子,用來抽象化,邏輯的實現都堆到子類中去重寫這些方法。客戶端只需要認識乙個類即可。class abstractclass 抽象的模板類 抽象方法 virtual void primitiveoperation2 vo...
設計模式 模板方法模式C 實現
定義乙個操作的演算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。實現方案 將演算法 邏輯框架放在抽象基類中,並定義好實現介面,在子類中實現細節介面。注 策略模式,解決的是相同的問題,只是其方案是將各個介面封裝為類,通過委託 組合方式解決問題 ...