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();
	}
};
相关推荐
T___18 小时前
从入门到放弃?带你重新认识 Headless UI
前端·设计模式
用户6869161349018 小时前
哈希表实现指南:从原理到C++实践
数据结构·c++
葬送的代码人生18 小时前
AI Coding→像素飞机大冒险:一个让你又爱又恨的小游戏
javascript·设计模式·ai编程
大老板a19 小时前
c++五分钟搞定异步处理
c++
羑悻的小杀马特1 天前
从信息孤岛到智能星云:学习助手编织高校学习生活的全维度互联网络
c++·学习·生活·api
C++ 老炮儿的技术栈1 天前
VSCode -配置为中文界面
大数据·c语言·c++·ide·vscode·算法·编辑器
祁同伟.1 天前
【C++】类和对象(上)
c++
90wunch1 天前
更进一步深入的研究ObRegisterCallBack
c++·windows·安全
刃神太酷啦1 天前
聚焦 string:C++ 文本处理的核心利器--《Hello C++ Wrold!》(10)--(C/C++)
java·c语言·c++·qt·算法·leetcode·github
DARLING Zero two♡1 天前
C++数据的输入输出秘境:IO流
c++·stl·io流