,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法是的子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定的步驟。
模板方法模式
「模板方法是通過把不變形為搬移到超類,去除子類中重複**來體現它的優勢。」
「既然用了繼承,並且肯定這個繼承有意義,就應該要成為子類的模板,所有重複的**都應該要上公升到父類去,而不是讓每個子類都去重複。」
「我們要完成在某一細節層次一致的乙個過程或一些列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,我們通常考慮模板方法模式來處理。」
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 模板方法模式
模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。既然用了繼承,並且肯定這個繼承有意義,就應該要成為子類的模板,所有重複的 都應該要上公升到父類去,而不是讓每個子類都去重複。當我們要完成在某一細節層次一致...
模板方法模式
有這樣乙個場景 乙個演算法或流程,它的步驟以及步驟之間的順序是固定的,但具體的某一步可能有不同的實現。對於這麼乙個場景,可以建立多個類,各個類實現不同的實現,但是這樣的缺點是 易錯 難改,易錯 應為步驟和順序是固定的,而且在每個類中都要寫一遍,程式設計師怎有心情不好的時候,就有可能把其中某一步給寫錯...