模板方法模式理解

2022-03-31 03:13:57 字數 858 閱讀 9779

原文:

在現實生活中,很多事情都包含幾個實現步驟,例如請客吃飯,無論吃什麼,一般都包含點單、吃東西、買單等幾個步驟,通常情況下這幾個步驟的次序是:點單 --> 吃東西 --> 買單。在這三個步驟中,點單和買單大同小異,最大的區別在於第二步——吃什麼?吃麵條和吃滿漢全席可大不相同,如圖1所示:

在軟體開發中,有時也會遇到類似的情況,某個方法的實現需要多個步驟(類似「請客」),其中有些步驟是固定的(類似「點單」和「買單」),而有些步驟並不固定,存在可變性(類似「吃東西」)。為了提高**的復用性和系統的靈活性,可以使用一種稱之為模板方法模式的設計模式來對這類情況進行設計,在模板方法模式中,將實現功能的每乙個步驟所對應的方法稱為基本方法(例如「點單」、「吃東西」和「買單」),而呼叫這些基本方法同時定義基本方法的執行次序的方法稱為模板方法(例如「請客」)。在模板方法模式中,可以將相同的**放在父類中,例如將模板方法「請客」以及基本方法「點單」和「買單」的實現放在父類中,而對於基本方法「吃東西」,在父類中只做乙個宣告,將其具體實現放在不同的子類中,在乙個子類中提供「吃麵條」的實現,而另乙個子類提供「吃滿漢全席」的實現。通過使用模板方法模式,一方面提高了**的復用性,另一方面還可以利用物件導向的多型性,在執行時選擇一種具體子類,實現完整的「請客」方法,提高系統的靈活性和可擴充套件性。

點評:這個作者解析得真是通俗易懂,真是舉重若輕。

模板方法模式:定義乙個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

**就不貼了,設計模式的關鍵在於其思想。

模板方法模式初理解

在物件導向程式設計過程中,程式設計師常常會遇到這種情況 設計乙個系統時知道了演算法所需的關鍵步驟,而且確定了這些步驟的執行順序,但某些步驟的具體實現還未知,或者說某些步驟的實現與具體的環境相關。例如,去銀行辦理業務一般要經過以下4個流程 取號 排隊 辦理具體業務 對銀行工作人員進行評分等,其中取號 ...

模板方法模式

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

模板方法模式

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