策略模式
来源:互联网 发布:linux 源码 mysql 编辑:程序博客网 时间:2024/06/13 03:40
#include <iostream>using namespace std;class CashSuper{ public: virtual double acceptCash(double money) = 0;};class CashNormal: public CashSuper{ public: double acceptCash(double money) { return money; }};class CashRebate: public CashSuper{ public: CashRebate(double moneyRebate):m_moneyRebate(moneyRebate){} double acceptCash(double money) { return money * m_moneyRebate; } private: double m_moneyRebate;};class CashReturn: public CashSuper{ public: CashReturn(double moneyCondition, double moneyReturn):m_moneyCondition(moneyCondition), m_moneyReturn(moneyReturn){} double acceptCash(double money) { double result = money; if (money >= m_moneyCondition) { result = money - (int)(money / m_moneyCondition) * m_moneyReturn; } return result; } private: double m_moneyCondition; double m_moneyReturn;};class CashContext{ public: CashContext(int type):m_cs(NULL) { switch (type) { case 1: m_cs = new CashNormal; break; case 2: m_cs = new CashReturn(300, 100); break; case 3: m_cs = new CashRebate(0.8); break; } } double GetResult(double money) { double result = -1; if (m_cs) result = m_cs->acceptCash(money); return result; } private: CashSuper * m_cs;};int main(){ CashContext cc1(1); cout << cc1.GetResult(389) << endl; CashContext cc2(2); cout << cc2.GetResult(602) << endl; CashContext cc3(3); cout << cc3.GetResult(389) << endl; return 0;}
1 0
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- man手册,系统函数,库函数
- 简单使用Smarty
- c# asp.net 在vs2012上网站调试成功,发布后点击按钮后出现:“/”应用程序中的服务器错误。未将对象引用
- SOUI创建子窗口和父子窗口通讯
- 浅谈秒杀系统架构设计
- 策略模式
- 手动唤醒pmon的方法,手工唤醒pmon进程对释放killed状态的会话无效
- HDU 2089 不要62 (数位dp入门题)
- 全选,反选,全不选源代码
- Could not open Hibernate Session for transaction 解决方案
- 第八周拓展实践(3)换分币
- node js 进阶-node的多核实现
- Part 63 - mvc 分页
- 地图坐标转换 -- 火星坐标与GPS坐标