動機(motivation)
在軟體構建過程中,對於某一項任務,它常常有穩定的整體操作結構,但各個子步驟卻有很多改變的需求,或者由於固有的原因(比如框架與應用之間的關係)而無法和任務的整體結構同時實現。
如何在確定穩定操作結構的前提下,來靈活應對各個子步驟的變化或者晚期實現需求?
意圖(intent)
定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。template method使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
結構(structure)
**實現:
1//框架開發者-先開發
2public
abstract
class
vehicle316
}1718public
class
vehicletestframework
1925
public
void
dotest()
2629 }
1template method模式的幾個要點:template method模式是一種非常基礎性的設計模式,在物件導向系統中有著大量的應用。它用最簡潔的機制(虛函式的多型性)為很多應用程式框架提供了靈活的擴充套件點,是**復用方面的基礎實現結構。//應用程式開發人員,後開發
2class
hongqivehicle:vehicle38
9protected
override
void
startup()
1013
14protected
override
void turn(int
degree)15度
",degree);17}
1819
protected
override
void
stop()
2023 }
除了可以靈活應對子步驟的變化外,「不要呼叫我,讓我來呼叫你」的反向控制結構是template method的典型應用。
在具體實現方面,被template method呼叫的虛方法可以具有實現,也可以沒有任何實現(抽象方法、純虛方法),但一般推薦將他們設定為protected方法。
設計模式之GOF23模板模式
模板模式template method 場景 具有具體流程,但具體某一步的業務不同 到銀行辦理業務 排隊取號,辦理業務,給員工打分 請客吃飯 等待,點單,吃飯,結賬 模板方法模式介紹 模板方法是程式設計常用的模式,它定義了乙個操作中的演算法骨架,將某些步驟延遲到子類中實現。這樣,新的子類可以在不改變...
Gof之狀態模式
1.在環境類中會維持乙個對抽象狀態類物件的引用,並且有乙個改變狀態的方法setstate 還應該有一些會引起狀態改變的資料,例如銀行系統的存錢 取錢方法,這是在環境類中定義的。2.抽象狀態類,這裡面定義了一些在某種狀態下需要的操作handle 如銀行系統在某個狀態下存錢 取錢。可以肯定一定要有狀態檢...
GOF設計模式 物件行為型模式 模板模式
在現實生活中,很多事情都包含幾個實現步驟,例如請客吃飯,無論吃什麼,一般都包含點 單 吃東西 買單等幾個步驟,通常情況下這幾個步驟的次序是 點單 吃東西 買單。在這三個步驟中,點單和買單大同小異,最大的區別在於第二步 吃什麼?吃麵條和吃滿 漢全席可大不相同。在軟體開發中,有時也會遇到類似的情況,某個...