設計模式——模版模式(template)

Template、Strategy、Observor屬於構件協作類型的設計模式。

motivation:對於某一項任務,常常有穩定的整體操作結構,但是各個子步驟卻又很多改變的需求,或者由於固有原因無法與整體任務結構一起實現(整體穩定,局部變化)。

key interface or class:

        1.library或者framework—在框架或者類庫中定義主流程,對變化的子類方法進行晚綁定;

        2.application—調用者,實現變化的方法,調用主流程運行。

structure:

template codes:

//庫或者框架的實現
class library{
public:
    void run(){
    //穩定的主流程步驟
    step1();
    step2(); //支持變化,使用虛函數來說實現多態
    step3();
    step4(); //支持變化,使用虛函數來說實現多態
    step5();
    }
    virtual ~library(){}; 
protect:
    //穩定步驟
    void step1(){
    //...
    }
    void step3(){
    //...
    }
    void step4(){
    //...
    }

    //變化步驟
    virtual void step2()=0;
    virtual void step4()=0;
}


//調用者的工作
//1.繼承函數來實現變化的功能
class application: public library{
protect:
    virtual void step2(){
    //實現具體功能
    };
    virtual void step4(){
    //實現具體功能
    };
}

//調用主流程
int main(){
    library* lib = new application();
    lib->run();
    
    delete lib;
}


summary:

1. template模式是非常基礎的設計模式,爲許多應用程序框架提供了靈活的擴展點;

2.“不要調用我,讓我來調用你”的反向控制結構;

3.在template method中調用的虛函數,可以實現也可以沒有實現(抽象方法或者純虛方法)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章