考題抄錯會做也白搭 模板方法模式

2022-09-15 21:00:23 字數 2944 閱讀 4288

10.1 考題不會做,蒙唄!

10.2 重複 = 易做 + 難改

namespace

模板方法模式

}//學生甲抄的試卷

class

test*****a

//試題2

public

void

testquestion2()

//試題3

public

void

testquestion3()

}//學生乙抄的試卷

class

test*****b

//試題2

public

void

testquestion2()

//試題3

public

void

testquestion3()}}

view code

10.3 提煉**

把試題和答案分開,抽象出乙個試題父類讓兩個子類繼承它,公共的試題**寫在父類中,

namespace

模板方法模式

}//金庸**考題試卷

class

test*****

public

void

testquestion2()

public

void

testquestion3()

}class

test*****a : test*****

public

newvoid

testquestion2()

public

newvoid

testquestion3()

}class

test*****b : test*****

public

newvoid

testquestion2()

public

newvoid

testquestion3()}}

view code

相同的東西還是有的,如base和console,其實除了答案abcd外都是重複的,

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

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

namespace

模板方法模式

}class

test*****

public

void

testquestion2()

public

void

testquestion3()

protected

virtual

string answer1() //

此方法目的就是給繼承的子類重寫,因為這裡每個人的答案都是不同的,

protected

virtual

string

answer2()

protected

virtual

string

answer3()

}//學生甲抄的試卷

class

test*****a : test*****

protected

override

string

answer2()

protected

override

string

answer3()

}//學生乙抄的試卷

class

test*****b : test*****

protected

override

string

answer2()

protected

override

string

answer3()}}

view code

10.4 模板方法模式

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

namespace

模板方法模式

}//abstractclass抽象類也是一抽象模板,定義並實現乙個模板方法,

//模板方法一般是乙個具體方法,它給出了乙個頂級邏輯的骨架,而邏輯的組成步驟在相應的抽象操作中,推遲到子類實現,

//頂級邏輯也有可能呼叫一些具體方法,

abstract

class

abstractclass

}class

concreteclassa : abstractclass

public

override

void

primitiveoperation2()

}class

concreteclassb : abstractclass

public

override

void

primitiveoperation2()}}

view code

10.5 模板方法模式特點

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

模板方法模式就是提供了乙個很好的**復用平台,

當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複出現,通過模板方法模式把這些行為搬移到單一的地方,這樣就幫助子類擺脫重複的不變行為的糾纏,

10.6 主觀題,看你怎麼蒙

模板方法模式 考題抄錯會做也白搭

模板方法 當我們要完成在某一細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,我們通常考慮用模板方法模式來處理。模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。模板方法模...

第十章 考題抄錯會做也白搭 模板方法模式

個人學習筆記,不具備參考價值 模板方法 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法模式使得子類不改變演算法的結構即可重新定義該演算法的某些步驟。說白點就是 abstractclass類實現了乙個演算法,對應的是方法methoda,方法methoda中呼叫了抽象方法step1 s...

模板方法模式Python版 考題抄錯會做也白搭

重複 易錯 難改 class test a def testquestion1 self print test question 1 print answer b def testquestion2 self print test question 2 print answer a def test...