c++ 设计模式 策略模式

最初版本

cpp 复制代码
enum TaxBase
{
	CN_Tax,
	US_Tax,
	DE_Tax
};

class SalesOrder
{
	TaxBase tax;
public:
	double CalcaulateTax()
	{
		if (tax == CN_Tax)
		{

		}
		else if (tax == US_Tax)
		{

		}
		else if (tax == DE_Tax)
		{

		}
	}
};

最终版本

cpp 复制代码
class TaxStrategy
{
public:
	virtual double Calculate(const Context& contxt) = 0;
	virtual	~TaxStrategy(){}
};

class CNTax : public TaxStrategy
{
public:
	virtual double Calculate(const Context& contxt)
	{

	}
};

class USTax : public TaxStrategy
{
public:
	virtual double Calculate(const Context& contxt)
	{

	}
};

class DETax : public TaxStrategy
{
public:
	virtual double Calculate(const Context& contxt)
	{

	}
};




class SaleOrder
{
private:
	TaxStrategy* strategy;
public:
	SaleOrder(StrategyFactory* strategyfactory)
	{
		strategy = strategyfactory->NewStrategy;
	}
	~SaleOrder()
	{
		delete strategy;
	}
	double CalculateTax()
	{
		Context context;
		double val = strategy->Calculate();
	}
};
相关推荐
福楠7 分钟前
模拟实现stack、queue、priority_queue
c语言·开发语言·数据结构·c++
小六子成长记13 分钟前
C++:map和set重点解析
开发语言·c++
草莓熊Lotso22 分钟前
脉脉独家【AI创作者xAMA】| 开启智能创作新时代
android·java·开发语言·c++·人工智能·脉脉
moxiaoran575329 分钟前
Java设计模式的运用
java·开发语言·设计模式
Chasing Aurora39 分钟前
C++后端开发之旅(一)
java·开发语言·c++
hz_zhangrl43 分钟前
CCF-GESP 等级考试 2025年12月认证C++六级真题解析
c++·算法·青少年编程·程序设计·gesp·c++六级·gesp2025年12月
bkspiderx1 小时前
C++多态:面向对象编程的核心机制
c++·多态·函数重载·回调函数·运算符重载·虚函数·纯虚函数
GISer_Jing1 小时前
提示链(Prompt Chaining)、路由、并行化和反思
人工智能·设计模式·prompt·aigc
Thera7771 小时前
C++ 中如何安全地共享全局对象:避免“multiple definition”错误的三种主流方案
开发语言·c++
MindCareers1 小时前
Beta Sprint Day 1-2: Alpha Issue Fixes Initiated + Mobile Project Setup
android·c语言·数据库·c++·qt·sprint·issue