模板方法模式:提到模板我們經常會想到簡歷模板/ppt模板等,以簡歷模板為例,不同的人可以使用一樣的簡歷模板,在填充內容時根據自己的名字/工作經歷等填寫自己的內容,從而形成不同的簡歷。在oo中模板方法模式和現實中的模板十分相似,首先要有乙個封裝了不可變部分的抽象類(簡歷的大致結構,都有姓名、性別、年齡、工作經歷等),然後將可變部分延遲到子類中(不同人的簡歷內容不同,這些不同的內容放在子類中實現),模板方法就是多型的一種實現。抽象類中模板方法不僅僅可以定義內容的,也可以定義執行的順序。
以釣魚為例,我們去釣魚不管釣什麼魚都可以歸結為四步:裝餌料,下竿,中魚。這三步的順序是不變的,其中第一步是不能改變的,無論我們不管釣什麼魚都要先有餌料。我們在**中來理解模板方法模式的用法。
定義抽象模板類:public abstract class gofish
}
然後定義子類,繼續模板父類public class fishmana : gofish
public override void waitfish()
public override void upfish()
}
釣魚人a,b充當子類,分別繼承重寫父類的模板方法;public class fishmanb : gofish
public override void waitfish()
public override void upfish()
}
抽象方法定義在抽象產品類,子類ab充當具體產品類。並且實現父類的抽象方法;
呼叫執行:static void main(string args)
模板方法模式的應用場景:模板方法模式在抽象類中定義執行的方法和步驟,子類按需重寫各個步驟的方法,從而滿足具體的需求。某些行為可以分步執行且執行的步驟固定時可以考慮使用模板方法模式。
模板方法模式的優點:
模板方法的行為由父類控制,子類實現,提取了公共**,便於維護。
模板方法模式的缺點:
每一種具體的實現都需要乙個子類實現,可能會導致子類過多。
C 設計模式 模板方法模式
模板方法模式 應用廣泛的模式 一 意圖 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法結構即可重定義該演算法的某些特定步驟。二 作用 三 使用技巧 先抽象出乙個類,寫出一些抽象行為放到子類中實現,寫乙個模板方法,推遲到子類實現。四 特點 優點 不用再抄一...
C 設計模式 模板方法模式
定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。一些方法通用,卻在每乙個子類都重新寫了這一方法。關鍵 在抽象類實現,其他步驟在子類實現。優點缺點 封裝不變的部分,擴充套件可變部分 每乙個不同的實現都需要乙個子類來實現,導致類...
C 設計模式 模板方法模式
模板方法 定義乙個操作中的演算法骨架 穩定 而將一些步驟延遲到子類中實現。模板方法使得子類可以再不改變乙個演算法的結構即可重新定義該演算法的某些特定步驟 變化 通過把不變的行為搬移到基類中,去除了子類的重複 提供了乙個很好的 復用解決方案。libary類 class libary private v...