【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;
}
相关推荐
zhangyao9403302 小时前
关于js导入Excel时,Excel的(年/月/日)日期是五位数字的问题。以及对Excel日期存在的错误的分析和处理。
开发语言·javascript·excel
骑驴看星星a2 小时前
【Three.js--manual script】4.光照
android·开发语言·javascript
2301_795167203 小时前
玩转Rust高级应用 如何避免对空指针做“解引用”操作,在C/C++ 里面就是未定义行为
c语言·c++·rust
星释3 小时前
Rust 练习册 :Leap与日期计算
开发语言·后端·rust
悟能不能悟5 小时前
java的java.sql.Date和java.util.Date的区别,应该怎么使用
java·开发语言
循环过三天5 小时前
3.4、Python-集合
开发语言·笔记·python·学习·算法
xiaodaidai丶5 小时前
设计模式之策略模式
设计模式·策略模式
_院长大人_6 小时前
设计模式-工厂模式
java·开发语言·设计模式
MATLAB代码顾问6 小时前
MATLAB实现决策树数值预测
开发语言·决策树·matlab
不染尘.8 小时前
2025_11_7_刷题
开发语言·c++·vscode·算法