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();
	}
};
相关推荐
pengzhuofan2 小时前
Java设计模式-模板方法模式
java·设计模式·模板方法模式
使二颗心免于哀伤2 小时前
《设计模式之禅》笔记摘录 - 17.模板方法模式
笔记·设计模式·模板方法模式
weixin_307779132 小时前
C++进程监视器与自动启动程序
开发语言·c++·算法
草莓熊Lotso3 小时前
【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day12
c语言·开发语言·c++·刷题
用户7227868123443 小时前
C++ 使用分治减小模板递归深度
c++
尘世闲鱼4 小时前
移动零【三种思路】
c++·leetcode
ALex_zry4 小时前
将C++资源管理测试框架整合到GitLab CI/CD的完整实践指南
c++·ci/cd·gitlab
编啊编程啊程10 小时前
JUC之AQS
java·开发语言·jvm·c++·kafka
jingfeng51413 小时前
C++模板进阶
java·c++·算法
头发掉光的程序员14 小时前
第七章 利用Direct3D绘制几何体
c++·windows·图形渲染·direct12