7 模板方法模式

2021-09-05 23:43:38 字數 2023 閱讀 4493

,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法是的子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定的步驟。

模板方法模式

「模板方法是通過把不變形為搬移到超類,去除子類中重複**來體現它的優勢。」

「既然用了繼承,並且肯定這個繼承有意義,就應該要成為子類的模板,所有重複的**都應該要上公升到父類去,而不是讓每個子類都去重複。」

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

1

#include

<

iostream

>

2#include

<

string

>34

using

std::cout;

5using

std::endl;

6using

std::

string;7

8//金庸**考題試卷

9class

testpater

1018

void

testquestion2()

1924

void

testquestion3()

2530

31virtual

string

answer1()

3235

virtual

string

answer2()

3639

virtual

string

answer3()

4043

};44

45//

學生甲抄的試卷

46class

testpatera :

public

testpater

4753

string

answer2()

5457

string

answer3()

5861

};62

63//

學生乙抄的試卷

64class

testpaterb :

public

testpater

6571

string

answer2()

7275

string

answer3()

7679

};80

81int

main()82

1

#include

<

iostream

>23

using

std::cout;

4using

std::endl;56

class

abstractclass715

virtual

void

primitiveoperation1() =0

;16virtual

void

primitiveoperation2() =0

;17};18

19class

concreteclassa :

public

abstractclass

2026

void

primitiveoperation2()

2730

};31

32class

concreteclassb :

public

abstractclass

3339

void

primitiveoperation2()

4043

};44

45int

main()46

設計模式 7 模板方法模式

兩個人要做兩張相同的試卷試卷,初步 public class main class test a public void question two public void question three class test b public void question two public void...

Chapter7 模板方法模式

模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。既然用了繼承,並且肯定這個繼承有意義,就應該要成為子類的模板,所有重複的 都應該要上公升到父類去,而不是讓每個子類都去重複。當我們要完成在某一細節層次一致...

模板方法模式

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