理解了模板方法的定義之後,自然實現模板方法也不是什麼難事了,下面以生活中炒蔬菜為例來實現下模板方法模式。在現實生活中,做蔬菜的步驟都大致相同,如果我們針對每種蔬菜類定義乙個燒的方法,這樣在每個類中都有很多相同的**,為了解決這個問題,我們一般的思路肯定是把相同的部分抽象出來到抽象類中去定義,具體子類來實現具體的不同部分,這個思路也正式模板方法的實現精髓所在,具體實現**如下:
class program
public abstract class vetegatable
public void pouroil()
public void heatoil()
public abstract void pourvetetable();
public void fanchao()
}public class spinach : vetegatable
}public class chinesecabbage : vetegatable
}}
模板方法模式中涉及了兩個角色:
下面讓我們繼續分析下模板方法的優缺點。
優點:
實現了**復用
能夠靈活應對子步驟的變化,符合開放-封閉原則
缺點:因為引入了乙個抽象類,如果具體實現過多的話,需要使用者或開發人員需要花更多的時間去理清類之間的關係。
附:在.net中模板方法的應用也很多,例如我們在開發自定義的web控制項或winform控制項時,我們只需要重寫某個控制項的部分方法。
設計模式學習十一 模板方法模式
一.概念 模板方法模式在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。二.uml abstractclass 定義了演算法的骨架 concreteclass 定義了演算法估計中具體演算法的實現 三.例項分析 做菜...
C 設計模式 模板方法模式
模板方法模式 應用廣泛的模式 一 意圖 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法結構即可重定義該演算法的某些特定步驟。二 作用 三 使用技巧 先抽象出乙個類,寫出一些抽象行為放到子類中實現,寫乙個模板方法,推遲到子類實現。四 特點 優點 不用再抄一...
《C 設計模式》 模板方法模式
模板方法模式 提到模板我們經常會想到簡歷模板 ppt模板等,以簡歷模板為例,不同的人可以使用一樣的簡歷模板,在填充內容時根據自己的名字 工作經歷等填寫自己的內容,從而形成不同的簡歷。在oo中模板方法模式和現實中的模板十分相似,首先要有乙個封裝了不可變部分的抽象類 簡歷的大致結構,都有姓名 性別 年齡...