程序优化是用于消除程序中大量的if else这种判断语句

 1 #include <iostream>
 2 #include <string>
 3
 4 using namespace std;
 5
 6 class CashSuper
 7 {
 8 public:
 9         virtual double GetTotalCash(double ddwMoney) = 0;
10 };
11
12 class CashNormal:public CashSuper
13 {
14 public:
15         virtual double GetTotalCash(double ddwMoney)
16         {
17                 return ddwMoney;
18         }
19 };
20
21 class CashRebate: public CashSuper
22 {
23 public:
24         CashRebate(float dwRebate):m_Rebate(dwRebate)
25         {
26
27         }
28
29         virtual double GetTotalCash(double ddwMoney)
30         {
31                 return m_Rebate * ddwMoney;
32         }
33
34 private:
35         float m_Rebate;
36 };
37
38 class CashContext
39 {
40 public:
41         CashContext()
42         {
43         }
44
45         CashContext(CashSuper* pstTmpCashSuper)
46         {
47                 m_pstCashSuper = pstTmpCashSuper;
48         }
49
50         void SetCashStrategy(CashSuper* pstTmpCashSuper)
51         {
52                 m_pstCashSuper = pstTmpCashSuper;
53         }
54
55         double GetTotalCash(double ddwMoney)
56         {
57                 return m_pstCashSuper->GetTotalCash(ddwMoney);
58         }
59
60 private:
61         CashSuper *m_pstCashSuper;
62 };
63
64 int main(void)
65 {
66         CashContext* stCashContext = new CashContext(new CashNormal());
67
68         cout<<"应付价钱为: "<< stCashContext->GetTotalCash(100)<< endl;
69
70         stCashContext = new CashContext(new CashRebate(0.8));
71
72         cout<<"应付价钱为: "<< stCashContext->GetTotalCash(100)<< endl;
73
74         return 0;
75 }
76 ///
77 [root]$ ./strategy
78 应付价钱为: 100
79 应付价钱为: 80

转载于:https://www.cnblogs.com/070412-zwc/p/6766946.html

设计模式——策略模式(C++实现)相关推荐

  1. Python设计模式-策略模式

    Python设计模式-策略模式 代码基于3.5.2,代码如下; #coding:utf-8 #策略模式class sendInterface():def send(self,value):raise ...

  2. 关于设计模式——策略模式-Strategy Pattern

    文章目录 1 策略模式 1.1 模拟鸭子 1.2 设计原则 1.3 整合行为 1.4 模拟鸭子代码的代码 1.5 动态设定行为 1.6 重新查看整体 1.7 继承和组合 1.8 总结 1.9 优劣期间 ...

  3. [设计模式] ------ 策略模式

    策略模式 它定义了算法家族,分别封装起来,让他们直接可以互相替换,此模式让算法的变化,不会影响到使用算法的客户 其实很简单,可能很多人都用到了,只不过还不知道这就是策略模式而已. 比如定义一个接口A, ...

  4. java 策略模式 促销_java设计模式——策略模式

    一. 定义与类型 定义:针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换.策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能.当代码中 ...

  5. Springboot 使用设计模式- 策略模式

    前言 直白点,什么场景我们需要使用到设计模式- 策略模式. 在平常的springboot项目里面做CRUD,我们的习惯性基本是 一个mapper,一个service,一个serviceImpl. 但是 ...

  6. 李建忠设计模式——策略模式Strategy

    目录 1.策略模式定义 1.动机 2.模式定义 3.结构 2.实现例子 1.问题描述 2.代码实现 3.要点总结 4.参考 1.策略模式定义 1.动机 软件构建过程中,某些对象使用的算法可能多种多样, ...

  7. 15. 星际争霸之php设计模式--策略模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  8. Java设计模式-策略模式作业

    Java设计模式-策略模式作业,所有类和接口均在一个package内 文章目录 前言 一.作业内容 二.具体实现 1.类图 2.Strategy接口 3.PreCopyStrategy类 4.Post ...

  9. 设计模式-策略模式2.0

    设计模式-策略模式2.0 前面文章我们说过了传统的策略模式的实现,本文我们简单说下设计模式中的升级版的策略模式,策略模式2.0. 代码实现 talk is cheap show me the code ...

  10. 设计模式-策略模式(Strategy)-Java

    设计模式-策略模式(Strategy)-Java 目录 文章目录 1.前言 2.示例案例-电影票打折方案 3.策略模式概述 3.1.策略模式定义 3.2.策略模式结构 3.3.策略模式结构图中角色 3 ...

最新文章

  1. java 常规类的可见性_Java 12常规可用性
  2. CDP客户数据管理平台体系化搭建
  3. 这才是牛逼程序员的标配!
  4. java 删除二进制内容_二进制搜索树节点删除不删除替换Java
  5. LeetCode 面试题 01.06. 字符串压缩 (双指针)
  6. 关于MAC中anaconda下python版本的问题
  7. 国际c语言混乱编码大赛,国际C语言混乱代码大赛(IOCCC)
  8. scratch编程《大转盘》
  9. python实现Excel邮件合并
  10. 雪崩效应 (密码学术语)
  11. 关于vs2022设置默认浏览器
  12. 【每日论文】GenCo: Generative Co-training for Generative Adversarial Networks with Limited Data
  13. 用Tina-TI软件仿真并分析RC积分电路和微分电路
  14. 二年级的女儿用计算机算算术,二年级数学 | 关于计算,学而思老师这样说...
  15. [词根词缀]cent/centr/cern/cide/cir的由来
  16. 报错:cannot import name ‘imread‘ from ‘scipy.misc‘
  17. oracle goldengate实战指南,Oracle GoldenGate 11g官方文档Administrator’s Guide续三
  18. 基石为勤能补拙的迷宫之旅——第一天(计算机硬件和操作系统)
  19. mysql update join优化update in查询效率
  20. 统计学术语及解释(一)

热门文章

  1. 详解XStream别名
  2. oracle 用函数返回对象集合
  3. UCOS 操作系统 安装配置环境
  4. oracle数据库优化--基本概念
  5. 为什么要那么大的房子和那么大的储存空间呢?
  6. 2021第三封拒信来自哈佛大学计算机科学与技术专业~
  7. 小创业项目组的管理和实践:快速迭代的思考
  8. 多智能系统的第一个小视频
  9. jQuery-强大的jQuery选择器 (详解)
  10. Solaris 9安装VNC