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();
	}
};
相关推荐
91刘仁德18 分钟前
c++类和对象(下)
c语言·jvm·c++·经验分享·笔记·算法
diediedei30 分钟前
模板编译期类型检查
开发语言·c++·算法
mmz12071 小时前
分治算法(c++)
c++·算法
yangpipi-1 小时前
2. 设计模式之结构型模式
设计模式
一切尽在,你来1 小时前
C++多线程教程-1.2.1 C++11/14/17 并发特性迭代
开发语言·c++
80530单词突击赢1 小时前
C++入门指南:从零到精通
开发语言·c++
Tansmjs2 小时前
C++编译期数据结构
开发语言·c++·算法
diediedei2 小时前
C++类型推导(auto/decltype)
开发语言·c++·算法
兩尛2 小时前
c++的数组和Java数组的不同
java·开发语言·c++
lhxcc_fly2 小时前
手撕简易版的vector
c++·vector