大话设计模式2-策略模式(商场促销)

1.需求:商场促销

商场有不同的促销情况,可以打折、满减以及不促销

2.简单工厂实现

简单工厂实现可以①设计一个收费抽象类,交给子类去重写

#pragma once
class cashSuper {
   
public :
	virtual double acceptCash(double money)
	{
   
		return money;
	}
};

②再定义正常收费、满减、打折三个子类。
正常收费

#pragma once
#include"cashSuper.h"
class cashNomal :public cashSuper {
   
public:
	double acceptCash(double money)
	{
   
		return money;
	}
};

打折

#pragma once
#include"cashSuper.h"
class cashRebate :public cashSuper {
   
public:
	cashRebate(double bate = 1):rebate(bate){
   }
	double acceptCash(double money){
   
		return money*rebate;
	}
private:
	double rebate;
};

满减
构造时需要两个参数分别是满减条件以及满减金额

#pragma once
#include"cashSuper.h"
class cashReturn :public cashSuper {
   
private:
	double moneycond;
	double moneyret;
public:
	cashReturn(double cond,double ret):moneycond(cond),moneyret(ret){
   }
	double acceptCash(double money)
	{
   
		double res = money;
		if (money > moneycond)
			res = money - int((money / moneycond))* moneyret;
		return res;
	}
};

③之后是工厂类,用来实例化合适的对象

#pragma once
#include"cashNormal.h"
#include"cashRebate.h"
#include"cashReturn.h"
#include"cashSuper.h"
using namespace std;
enum typeset{
   nomal,rebate,ret};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值