您的位置:首页 > 编程语言 > C语言/C++

C++ 10模板方法模式

2015-12-10 15:22 337 查看
模板方法模式,首先定义一个操作中的算法的骨架,而将一些算法细节延迟到子类中实现。模板方法使得子类不改变一个算法的结构同时又可重定义该算法的某些特定步骤。

模板方法结构图:



AbstractClass类,实现了一个模板方法,定义了算法的骨架(TemplateMethod函数中),primitiveOperation方法是虚函数,子类中要重新实现算法中一个步骤的细节。
ConcreteClass类,实现PrimitiveOperation以完成算法中与特定子类相关的步骤。

具体代码如下:

#include<iostream>
#include<string>

using namespace std;

class TestPaper
{
public:
void TestQuestion1()
{
cout << "练成倚天剑、屠龙刀的玄铁可能是[ ] a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维"<<endl;
cout << "答案:" << Answer1() << endl;
}
protected:
virtual string Answer1() = 0;//纯虚函数
};

//小明给出的答案
class XiaoMing :public TestPaper
{
string  Answer1()
{
return "b";
}
};

//小强给出的答案
class XiaoQiang :public TestPaper
{
string  Answer1()
{
return "c";
}
};

int main()
{
TestPaper *xiaoming = new XiaoMing();
xiaoming->TestQuestion1();

TestPaper *xiaoqiang = new XiaoQiang();
xiaoqiang->TestQuestion1();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: