设计模式——策略模式(C++实现)
程序优化是用于消除程序中大量的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++实现)相关推荐
- Python设计模式-策略模式
Python设计模式-策略模式 代码基于3.5.2,代码如下; #coding:utf-8 #策略模式class sendInterface():def send(self,value):raise ...
- 关于设计模式——策略模式-Strategy Pattern
文章目录 1 策略模式 1.1 模拟鸭子 1.2 设计原则 1.3 整合行为 1.4 模拟鸭子代码的代码 1.5 动态设定行为 1.6 重新查看整体 1.7 继承和组合 1.8 总结 1.9 优劣期间 ...
- [设计模式] ------ 策略模式
策略模式 它定义了算法家族,分别封装起来,让他们直接可以互相替换,此模式让算法的变化,不会影响到使用算法的客户 其实很简单,可能很多人都用到了,只不过还不知道这就是策略模式而已. 比如定义一个接口A, ...
- java 策略模式 促销_java设计模式——策略模式
一. 定义与类型 定义:针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换.策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能.当代码中 ...
- Springboot 使用设计模式- 策略模式
前言 直白点,什么场景我们需要使用到设计模式- 策略模式. 在平常的springboot项目里面做CRUD,我们的习惯性基本是 一个mapper,一个service,一个serviceImpl. 但是 ...
- 李建忠设计模式——策略模式Strategy
目录 1.策略模式定义 1.动机 2.模式定义 3.结构 2.实现例子 1.问题描述 2.代码实现 3.要点总结 4.参考 1.策略模式定义 1.动机 软件构建过程中,某些对象使用的算法可能多种多样, ...
- 15. 星际争霸之php设计模式--策略模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- Java设计模式-策略模式作业
Java设计模式-策略模式作业,所有类和接口均在一个package内 文章目录 前言 一.作业内容 二.具体实现 1.类图 2.Strategy接口 3.PreCopyStrategy类 4.Post ...
- 设计模式-策略模式2.0
设计模式-策略模式2.0 前面文章我们说过了传统的策略模式的实现,本文我们简单说下设计模式中的升级版的策略模式,策略模式2.0. 代码实现 talk is cheap show me the code ...
- 设计模式-策略模式(Strategy)-Java
设计模式-策略模式(Strategy)-Java 目录 文章目录 1.前言 2.示例案例-电影票打折方案 3.策略模式概述 3.1.策略模式定义 3.2.策略模式结构 3.3.策略模式结构图中角色 3 ...
最新文章
- java 常规类的可见性_Java 12常规可用性
- CDP客户数据管理平台体系化搭建
- 这才是牛逼程序员的标配!
- java 删除二进制内容_二进制搜索树节点删除不删除替换Java
- LeetCode 面试题 01.06. 字符串压缩 (双指针)
- 关于MAC中anaconda下python版本的问题
- 国际c语言混乱编码大赛,国际C语言混乱代码大赛(IOCCC)
- scratch编程《大转盘》
- python实现Excel邮件合并
- 雪崩效应 (密码学术语)
- 关于vs2022设置默认浏览器
- 【每日论文】GenCo: Generative Co-training for Generative Adversarial Networks with Limited Data
- 用Tina-TI软件仿真并分析RC积分电路和微分电路
- 二年级的女儿用计算机算算术,二年级数学 | 关于计算,学而思老师这样说...
- [词根词缀]cent/centr/cern/cide/cir的由来
- 报错:cannot import name ‘imread‘ from ‘scipy.misc‘
- oracle goldengate实战指南,Oracle GoldenGate 11g官方文档Administrator’s Guide续三
- 基石为勤能补拙的迷宫之旅——第一天(计算机硬件和操作系统)
- mysql update join优化update in查询效率
- 统计学术语及解释(一)