應(yīng)用程序結(jié)構(gòu)框架允許從一個(gè)或一組類中繼承以便創(chuàng)建一個(gè)新的應(yīng)用程序,重用現(xiàn)存類中幾乎所有的代碼,并且覆蓋其中一個(gè)或多個(gè)函數(shù)以便自定義所需要的應(yīng)用程序。應(yīng)用程序結(jié)構(gòu)框架中的一個(gè)基本的概念是模板方法模式,它很典型地隱藏在覆蓋的下方,通過(guò)調(diào)用基類的不同函數(shù)來(lái)驅(qū)動(dòng)程序運(yùn)行。
模板方法模式的一個(gè)重要特征是它的定義在基類中(有時(shí)作為一個(gè)私有成員函數(shù))并且不能改動(dòng),模板方法模式就是“堅(jiān)持相同的代碼“。它調(diào)用其他基類函數(shù)(就是那些被覆蓋的函數(shù))以便完成其工作,但是客戶程序員不必直接調(diào)用這些函數(shù)。驅(qū)動(dòng)應(yīng)用程序運(yùn)行的“引擎”是模板方法模式,示例代碼如下:
#include<iostream>
using namespace std;
class ApplicationFramework
{
protected :
virtual void customize1()=0;
virtual void customize2()=0;
public:
void templateMethod()
{
for(int i=0;i<5;i++)
{
customize1();
customize2();
}
}
};
class MyApp: public ApplicationFramework
{
protected:
void customize1(){cout<<"Hello";}
void customize2(){cout<<"World!"<<endl;}
};
int main()
{
MyApp app;
app.templateMethod();
}
參考:c++編程思想卷二