在軟體構建過程中,對於某一項任務,它常常有穩定的整體操作結構,但各個子步驟卻有很多改變的需求,或者由於固有的原因(比如說框架與應用之間的關係)而無法和任務的整體結構同時實現。
如何在確定穩定操作的前提下,來靈活應對各個子步驟的變化或者晚期的需求?
定義乙個操作中的演算法的骨架 (穩定),而將一些步驟延遲 (變化)到子類中。模板模式使得子類可以不改變 (復用)乙個演算法的結構即可重定義(override 重寫)該演算法的某些特定步驟。
資料庫開發人員定義了幾個步驟:
// 程式庫開發人員
class
library
void
step3()
void
step5()
};
// 應用程式開發人員
class
void
step4()
};
最後程式有乙個總的流程:
int
main()
for(
int i =
0; i <
4; i++
) lib.
step5()
;}
另一種做法:
資料庫開發人員在寫step1 step3 step5的同時也寫好對應的**流程。
// 程式庫開發人員
class
library
for(
int i =
0; i <
4; i++
)step5()
;}virtual
~library()
protected
:void
step1()
// 穩定
void
step3()
// 穩定
void
step5()
// 穩定
virtual
bool
step2()
=0;// 變化
virtual
void
step4()
=0;// 變化
};
// 應用程式開發人員
class
:public library
virtual
void
step4()
};
程式流程:
int
main()
優點:封裝不變部分,擴充套件可變部分。提取公共**,便於維護。行為由父類控制,子類實現。
缺點:每乙個不同的實現都需要乙個子類來實現,導致類的個數增加,使得系統更加龐大。
模板設計模式 23種設計模式之模板設計模式
1.模板方法模式 template method pattern 又叫模板模式 template pattern 在乙個抽象類公開定義了執行它的模板。它的子類可以俺需要重寫方法實現,但呼叫將以抽象類中定義的方式進行 2.簡單說,模板方法模式定義乙個操作中的演算法的骨架,而降一些步驟延遲到子類中,使得...
23種設計模式 模板方法模式
參考文件 通常叫模板方法模式定義乙個演算法的骨架,並允許子類為乙個或者多個步驟提供實現。能夠使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟。屬於行為性設計模式 一次性實現乙個演算法的不變的部分,並將可變的部分交給子類來實現 各子類中公共的行為被提取出來並集中到乙個公共的父類當中,從...
JAVA的23種設計模式 模板模式
1.該文章闡述了模板模式的原理及展示了模板模式的示例 2.該文章適合初學設計模式的技術人員研習 3.該文章有許多不足之處,請各位大咖指正,噴子繞道 模板模式 定義乙個操作中的演算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。1.模板模式 示例...