該設計模式中用到了抽象內容
從模板角度考慮,就是對模板的應用,好比老師出試卷,每個人的試卷都是一樣的,都是從老師的原版試卷影印來的,這個原版試卷就是乙個模板,可每個人在試卷上的答案都是不一樣的,這就是模板方法模式。
具有統一的演算法骨架,即方法執行步驟是固定不變的;
針對不同的場景,存在多個具有相同操作步驟的應用場景,但部分演算法的實現細節與哦所差異
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 ...