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();
	}
};
相关推荐
杯莫停丶3 小时前
设计模式之:模板模式
开发语言·设计模式
lapiii3583 小时前
14天极限复习软考day4-法律、设计模式
设计模式
老猿讲编程4 小时前
C++中的奇异递归模板模式CRTP
开发语言·c++
Yupureki6 小时前
从零开始的C++学习生活 16:C++11新特性全解析
c语言·数据结构·c++·学习·visual studio
紫荆鱼6 小时前
设计模式-迭代器模式(Iterator)
c++·后端·设计模式·迭代器模式
应茶茶7 小时前
C++11 核心新特性:从语法重构到工程化实践
java·开发语言·c++
-森屿安年-8 小时前
STL 容器:stack
开发语言·c++
charlee448 小时前
最小二乘问题详解6:梯度下降法
c++·梯度下降·雅可比矩阵·非线性最小二乘·参数拟合
房开民8 小时前
OpenCV C++ 中,访问图像像素三种常用方法
c++·opencv·计算机视觉
报错小能手9 小时前
C++笔记(面向对象)深赋值 浅赋值
c++·笔记·学习