模板方法:當我們要完成在某一細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,我們通常考慮用模板方法模式來處理。
模板方法模式:定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
模板方法模式是通過把不變行為搬移到超類,去除子類中的重複**來體現他的優勢。
模板方法模式就是提供了乙個很好的**復用平台。因為有時候,我們會遇到由一系列步驟構成的過程需要執行,這個過程從高層次上看是相同的,但有些步驟的實現肯能不同。這時候,我們通常就應該要考慮用模板方法模式了。
當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在孜勒種重複出現。我們通過模板方法模式把這些不變的行為搬移到單一的地方,這樣就幫助子類擺脫重複的不變行為的糾纏。
1/**2* abstractclass是抽象類,其實也就是一抽象模板,定義並實現了乙個模板方法。
3* 這個模板方法一般是乙個具體方法,他給出了乙個頂級邏輯的骨架,而邏輯的組成步驟在響應的抽象操作中,
4* 推遲 到子類中實現。頂級邏輯也有可能呼叫一些具體方法。
5* @author 賢元6*
7*/8public
abstract
class
abstractclass
2324 }
1/**2
* 實現父類所定義的乙個或多個抽象方法,每乙個abstractclass都可以有任意多個concreteclass與之對應,
3* 而每乙個concreteclass都可以給出這些抽象方法(也就是頂級邏輯的組成步驟)的不同實現,從而使得頂級邏輯的實現各不相同。4*
@author賢元5
*6*/7
public
class concreteclassa extends
abstractclass
1415
@override
16public
void
primitiveoperation2()
2021 }
1測試類:/**2
* 實現父類所定義的乙個或多個抽象方法,每乙個abstractclass都可以有任意多個concreteclass與之對應,
3* 而每乙個concreteclass都可以給出這些抽象方法(也就是頂級邏輯的組成步驟)的不同實現,從而使得頂級邏輯的實現各不相同。4*
@author賢元5
*6*/7
public
class concreteclassb extends
abstractclass
1415
@override
16public
void
primitiveoperation2()
2021 }
1uml圖:public
class
test
18 }
考題抄錯會做也白搭 模板方法模式
10.1 考題不會做,蒙唄!10.2 重複 易做 難改 namespace 模板方法模式 學生甲抄的試卷 class test a 試題2 public void testquestion2 試題3 public void testquestion3 學生乙抄的試卷 class test b 試題2...
第十章 考題抄錯會做也白搭 模板方法模式
個人學習筆記,不具備參考價值 模板方法 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法模式使得子類不改變演算法的結構即可重新定義該演算法的某些步驟。說白點就是 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...