C++ 模板方法模式解析
模板方法模式定义
模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现
模板方法模式实例
- 以考试为例,考数学和考语文的过程几乎都是一样的,就是准备考试,背书,写试卷,不同点在于 写试卷,一个是写语文试卷,一个是写数学试卷,那么就可以把写试卷的过程 用不同子类实现
头文件:
//模板方法模式实例
//常规准备考试
class PreSubject
{
public:
void writeNote();//记笔记
void reciteBook();//背诵
virtual void writeTest() = 0; //做试卷
};
class PreMathSubject:public PreSubject
{
public:
void writeTest();
};
class PreChineseSubject:public PreSubject
{
public:
void writeTest();
};
实现文件:
// ModelMethod.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "ModelMethod.h"
using namespace std;
void PreSubject::reciteBook()
{
cout <<"背诵" <<endl;
}
void PreSubject::writeNote()
{
cout << "写笔记" << endl;
writeTest();
}
void PreMathSubject::writeTest()
{
cout << "写数学考卷" << endl;
}
void PreChineseSubject::writeTest()
{
cout << "写语文考卷" << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
PreSubject * cur_Chinese = new PreChineseSubject();
cur_Chinese->writeNote();
PreSubject * cur_Math = new PreMathSubject();
cur_Math->writeNote();
delete cur_Math;
delete cur_Chinese;
system("pause");
return 0;
}
运行结果: