模板方法模式

2021-10-08 10:48:38 字數 1621 閱讀 6139

該設計模式中用到了抽象內容

從模板角度考慮,就是對模板的應用,好比老師出試卷,每個人的試卷都是一樣的,都是從老師的原版試卷影印來的,這個原版試卷就是乙個模板,可每個人在試卷上的答案都是不一樣的,這就是模板方法模式。

具有統一的演算法骨架,即方法執行步驟是固定不變的;

針對不同的場景,存在多個具有相同操作步驟的應用場景,但部分演算法的實現細節與哦所差異

spring的事務管理的設計採用了模板方法的設計模式。事務的使用步驟可以抽象為:開啟事務,相關操作,提交事務。針對上述步驟中的」開啟事務「和」提交事務「,可由模板方法進行固定。而具體的」相關操作「,針對不同子類可以由不同的實現。

功能內部一部分實現是確定的,一部分實現不確定,把不確定的部分暴露出去,讓子類去實現

或者說實現某個功能,整體步驟固定,通用,已經在父類中寫好,但是某些部分是易變的,這些變化部分抽象出來,供不同子類實現

public

class

templatetest

}abstract

class

template

public

abstract

void

code()

;}class

subtemplate

extends

template

}}

public

abstract

class

test*****

public

void

question2()

public

void

question3()

//答案

protected

abstract string answer1()

;protected

abstract string answer2()

;protected

abstract string answer3()

;}class

test*****a

extends

test*****

@override

protected string answer2()

@override

protected string answer3()

}class

test*****b

extends

test*****

@override

protected string answer2()

@override

protected string answer3()

}class

test

}

執行結果

學生甲的試卷:1+

1=?答案:22+

2=?答案:43+

3=?答案:6

----

----

----

----

----

----

-學生乙的試卷:1+

1=?答案:112+

2=?答案:223+

3=?答案:33

模板方法模式

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

模板方法模式

模板方法模式 定義乙個演算法框架,將裡面的操作步驟推遲到子類中去執行,這樣使得子類不用改變框架,只需改變某些操作步驟方法 ifndef test h define test h include include using namespace std class test virtual test v...

模板方法模式

模板方法模式 在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟。還可以使用鉤子對可選部分進行判斷。include include using namespace std class caffeinebeverage ...