設計模式 - 模板方法(Template Method)

    一項任務,有穩定的整體結構和多邊的子步驟。可以使用模板方法(Template Method)。

定義

    模板方法,定義一個操作中的算法骨架,而將一些步驟延遲到子類,使得子類可以不改變一個算法的結構,但可以重定義該算法的某些特定步驟。

實例

    函數Run()是類庫中的框架函數供外部調用。Step1() 和Step2()在類庫中已經實現,Step3()需要用戶在子類中實現。

#include<iostream>
using namespace std;

class Library
{
public:
    void Run()
    {
        Step1();
        Step2();
        Step3();
    }
    //析構函數需要是虛函數
    virtual ~Library(){ }

protected:
    void Step1() {  }  
    void Step2() {  }
    virtual void Step3() = 0;
};

class Application : public Library
{
public:
    virtual void Step3() override { }
};

int main()
{
    Library* pLib = new Application();
    pLib->Run();
    delete pLib;
}

總結

     模板方法是很基礎的設計模式,它用最簡單的機制實現代碼複用。

    “不要調用我,讓我來調用你”的反向控制結構是模板方法的典型應用。

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