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();
	}
};
相关推荐
hetao17338374 小时前
2026-10-22~23 hetao1733837 的刷题记录
c++·算法
王老师青少年编程5 小时前
2025年6月GESP真题及题解(C++三级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·三级·信奥赛
snakecy5 小时前
macOS 安装 LaTeX 全流程指南:从 MacTeX 到中文排版
macos·策略模式
卡卡~~6 小时前
“101计划”核心课程实践教材《数据实验结构指导-C++语言版》题目集
开发语言·c++·学习·算法
lengxuenong7 小时前
树状数组 · 信息学学习手册1-求和3个模板
c++·学习·算法·青少年编程
ShineWinsu8 小时前
对于Qt:信号与槽的解析
c++·qt·gui·lambda·信号·信号与槽·槽函数
WL学习笔记8 小时前
使用string类
c++·后端·string类
xxxiugou1238 小时前
链表算法题精讲:从两数相加到K组翻转
数据结构·c++·算法·链表
HAPPY酷8 小时前
C++ 自定义内存池优化点云处理:从裸指针到 RAII 自动回收
开发语言·c++
是2的10次方啊9 小时前
设计模式与生活①:你的脸,为什么不能有第二个?
设计模式