设计模式——Template Method模板方法
生活随笔
收集整理的這篇文章主要介紹了
设计模式——Template Method模板方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1.動機
- 2.定義
- 3.代碼
- 4.總結
1.動機
在軟件構建過程中,對于某一項任務,它常常有穩定的整體操作結構, 但各個子步驟卻有很多改變的需求,或者由于固有的原因(比如框架與應用之間的關系) 而無法和任務的整體結構同時實現。如何在確定穩定操作結構的前提下,來靈活應對各個子步驟的變化或者晚期實現需求?2.定義
定義一個操作中的算法的骨架 (穩定),而將一些步驟延遲(變化)到子類中。 Template Method使得子類可以不改變(復用)一個算法的結構 即可重定義(override 重寫)該算法的某些特定步驟。3.代碼
//程序庫開發人員 class Library{ public://穩定 template methodvoid Run(){Step1();if (Step2()) { //支持變化 ==> 虛函數的多態調用Step3(); }for (int i = 0; i < 4; i++){Step4(); //支持變化 ==> 虛函數的多態調用}Step5();}virtual ~Library(){ }protected:void Step1() { //穩定//.....}void Step3() {//穩定//.....}void Step5() { //穩定//.....}virtual bool Step2() = 0;//變化virtual void Step4() =0; //變化 }; //應用程序開發人員 class Application : public Library { protected:virtual bool Step2(){//... 子類重寫實現}virtual void Step4() {//... 子類重寫實現} };int main(){Library* pLib=new Application();pLib->Run();delete pLib;} }4.總結
Template Method模式是一種非常基礎性的設計模式,在面向對象系統中有著大量的應用。 它用最簡潔的機制(虛函數的多態性)為很多應用程序框架提供了靈活的擴展點, 是代碼復用方面的基本實現結構。除了可以靈活應對子步驟的變化外,“不要調用我,讓我來調用你”的反向控制結構是Template Method的典型應用。在具體實現方面,被Template Method調用的虛方法可以具有實現,也可以沒有任何實現(抽象方法、純虛方法), 但一般推薦將它們設置為protected方法。總結
以上是生活随笔為你收集整理的设计模式——Template Method模板方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hexo如何绑定个人域名
- 下一篇: 项目:基于以太网通信,单片机作为客户端,