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();
	}
};
相关推荐
Dovis(誓平步青云)39 分钟前
破解C/C++内存分配与管理:内存对象模型硬核剖析
开发语言·c++·内存管理·解读
Uncertainty!!4 小时前
C++编译/链接模型
c++·链接·编译
CodeWithMe5 小时前
【C/C++】线程状态以及转换
java·c语言·c++
Stanf up5 小时前
C++单例模式
c++·单例模式
A1-296 小时前
QT之INI、JSON、XML处理
xml·c++·qt·json
丶Darling.7 小时前
Day126 | 灵神 | 二叉树 | 层数最深的叶子结点的和
数据结构·c++·算法·二叉树·深度优先
yuanpan7 小时前
CMake创建C++项目与npm创建nodejs项目异曲同工
开发语言·c++·npm
潇-xiao8 小时前
Qt 控件发展历程 + 目标(1)
c++·笔记·qt
梁下轻语的秋缘8 小时前
每日c/c++题 备战蓝桥杯(洛谷P4715 【深基16.例1】淘汰赛 题解)
c语言·c++·蓝桥杯
梁下轻语的秋缘8 小时前
每日c/c++题 备战蓝桥杯(洛谷P1873 EKO砍树问题详解)
c语言·c++·蓝桥杯