定義:定義乙個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該
演算法中的某些特定步驟。
型別:行為類模式
類圖:
1.7 template-method-pattern
事實上,模版方法是程式設計中乙個經常用到的模式。先來看乙個例子,某日,程式設計師a拿到乙個任務:給定乙個整數
陣列,把陣列中的數由小到大排序,然後把排序之後的結果列印出來。經過分析之後,這個任務大體上可分為兩
部分,排序和列印,列印功能好實現,排序就有點麻煩了。但是a有辦法,先把列印功能完成,排序功能另找人
做。
abstract class abstractsort }}
寫完後,a找到剛畢業入職不久的同事b說:有個任務,主要邏輯我已經寫好了,你把剩下的邏輯實現一下吧。於
是把abstractsort類給b,讓b寫實現。b拿過來一看,太簡單了,10分鐘搞定,**如下:
class concretesort extends abstractsort {
@override
protected void sort(int array){
for(int i=0; i執行結果:
排序結果: 0 1 3 4 5 7 9 10 12 32
執行正常。行了,任務完成。沒錯,這就是模版方法模式。大部分剛步入職場的畢業生應該都有類似b的經歷。一
個複雜的任務,由公司中的牛人們將主要的邏輯寫好,然後把那些看上去比較簡單的方法寫成抽象的,交給其他
模板方法模式
有這樣乙個場景 乙個演算法或流程,它的步驟以及步驟之間的順序是固定的,但具體的某一步可能有不同的實現。對於這麼乙個場景,可以建立多個類,各個類實現不同的實現,但是這樣的缺點是 易錯 難改,易錯 應為步驟和順序是固定的,而且在每個類中都要寫一遍,程式設計師怎有心情不好的時候,就有可能把其中某一步給寫錯...
模板方法模式
模板方法模式 定義乙個演算法框架,將裡面的操作步驟推遲到子類中去執行,這樣使得子類不用改變框架,只需改變某些操作步驟方法 ifndef test h define test h include include using namespace std class test virtual test v...
模板方法模式
模板方法模式 在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟。還可以使用鉤子對可選部分進行判斷。include include using namespace std class caffeinebeverage ...