C++ 10模板方法模式

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

模板方法结构图:

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值