【C++ 策略设计模式 】

策略设计模式

定义一组算法,将每个算法都封装起来,并且使它们之间可以互换

StartegyMode.cpp

javascript 复制代码
#include <iostream>
 
using namespace std;
 
class IStrategy {
public:
	IStrategy() {}
	virtual ~IStrategy() {}
 
	virtual void Discountsfun() = 0;
};
 
class qxj : public IStrategy {
public:
	qxj() {}
	~qxj() {}
 
	void Discountsfun() {
		cout << "run qxj 20'%' off" << endl;
	}
};
 
class gqj : public IStrategy {
public:
	gqj() {}
	~gqj() {}
 
	void Discountsfun() {
		cout << "run gqj 10'%' off " << endl;
	}
};
 
class Context {
public:
	Context(IStrategy *IStrategy) { pIStrategy = IStrategy; }
	~Context() { delete pIStrategy; }
 
	void run() {
		pIStrategy->Discountsfun();
	}
 
private:
	IStrategy *pIStrategy;
};
 
 // g++ StartegyMode.cpp -o StartegyMode
int main(int argc, char*argv[])
{
	Context context1(new qxj());
	context1.run();
 
	Context context2(new gqj());
	context2.run();
 
	return 0;
}
相关推荐
seabirdssss16 分钟前
错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException
java·开发语言
gnawkhhkwang34 分钟前
io_getevents 和 io_pgetevents 系统调用及示例
linux·c语言·开发语言
喵手35 分钟前
使用ASIWebPageRequest库编写Objective-C下载器程序
开发语言·macos·objective-c
weixin_456904271 小时前
C#泛型委托讲解
开发语言·c#
君莫笑几人回1 小时前
关于记录一下“bug”,在做图片上传的时候出现的小问题
java·开发语言·spring boot
R-G-B1 小时前
【08】C++实战篇——C++ 生成动态库.dll 及 C++调用DLL,及实际项目中的使用技巧
c++·c++ 生成动态库.dll·c++ 生成静态库.lib·c++调用动态库.dll·c++调用静态库.lib·c++调用dll·c++调用lib
rockmelodies2 小时前
RSA 解密逻辑
开发语言·python
pointers_syc2 小时前
【设计模式】2.策略模式
java·设计模式·策略模式
澡点睡觉2 小时前
golang的包和闭包
开发语言·后端·golang
Dxy12393102163 小时前
python创建一个excel文件
开发语言·python·excel