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();
	}
};
相关推荐
码农豆豆30 分钟前
4.C++中程序中的命名空间
开发语言·c++
Joker1008531 分钟前
C++初阶学习——探索STL奥秘——标准库中的priority_queue与模拟实现
c++
怀九日34 分钟前
C++(学习)2024.9.19
开发语言·c++·学习·重构·对象·
KookeeyLena81 小时前
如何限制任何爬虫爬取网站的图片
开发语言·c++·爬虫
m_Molly1 小时前
vs2022配置opencv==4.9.0(C++)
c++·opencv
charon87781 小时前
Unreal Engine 5 C++: 编辑器工具编写入门(中文解释)
c++·ue5·编辑器·游戏引擎·虚幻
Ddddddd_1581 小时前
C++ | Leetcode C++题解之第421题数组中两个数的最大异或值
c++·leetcode·题解
末央&1 小时前
【C++】内存管理
java·开发语言·c++
心之语歌2 小时前
设计模式 享元模式(Flyweight Pattern)
java·设计模式·享元模式
YRr YRr2 小时前
在Windows上安装WSL2和Ubuntu 20.04以搭建C++开发环境的详细指南
c++·windows·ubuntu·wsl2