定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
一些方法通用,卻在每乙個子類都重新寫了這一方法。關鍵**在抽象類實現,其他步驟在子類實現。
優點缺點
封裝不變的部分,擴充套件可變部分
每乙個不同的實現都需要乙個子類來實現,導致類的個數增加,使得系統更加龐大
提取公共**,便於維護
/行為由父類控制子類實現
/// exam基類 模板方法 封裝共有的方法question() 擴充套件方法 answer()
///
public
class
exam
public
virtual
string
answer()
public
void
question()
回答問題——今天暖和嗎"
, name,
answer()
));}
}public
class
zhangsan
:exam
public
override
string
answer()
}public
class
lisi
:exam
public
override
string
answer()
}}測試**:
更多:
C 設計模式 模板方法模式
模板方法模式 應用廣泛的模式 一 意圖 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法結構即可重定義該演算法的某些特定步驟。二 作用 三 使用技巧 先抽象出乙個類,寫出一些抽象行為放到子類中實現,寫乙個模板方法,推遲到子類實現。四 特點 優點 不用再抄一...
《C 設計模式》 模板方法模式
模板方法模式 提到模板我們經常會想到簡歷模板 ppt模板等,以簡歷模板為例,不同的人可以使用一樣的簡歷模板,在填充內容時根據自己的名字 工作經歷等填寫自己的內容,從而形成不同的簡歷。在oo中模板方法模式和現實中的模板十分相似,首先要有乙個封裝了不可變部分的抽象類 簡歷的大致結構,都有姓名 性別 年齡...
C 設計模式 模板方法模式
模板方法 定義乙個操作中的演算法骨架 穩定 而將一些步驟延遲到子類中實現。模板方法使得子類可以再不改變乙個演算法的結構即可重新定義該演算法的某些特定步驟 變化 通過把不變的行為搬移到基類中,去除了子類的重複 提供了乙個很好的 復用解決方案。libary類 class libary private v...