设计模式之策略模式,C++实现
来源:互联网 发布:图片矩阵 编辑:程序博客网 时间:2024/06/08 01:11
原创: http://blog.csdn.net/iuhsihsow
//策略模式
//抽象出算法
//可适应算放的频繁改动
//问1:和简单工厂有什么区别?
//答1:策略模式主要是将算法提炼出来,一个大的context中可以包括多个算法,便于context中算法的的自由配置,
//一次配置,多次使用,维持context的稳定性。
//简单类工厂模式主要是用于创建一个完整的对象,级别和策略模式不同。
//策略模式中可以包括一个工厂模式的抽象类的对象。
自己画的图,囧,将就吧
#include "stdafx.h" class CashSuper { public: virtual double CalcCash() = 0; void SetOrginCash(double dOrgCash) { m_dOrgCash = dOrgCash; } protected: double m_dOrgCash; }; class CashReBate : public CashSuper { public: double CalcCash() { return m_dOrgCash * 0.85; } }; class CashReturn : public CashSuper { public: double CalcCash() { if (m_dOrgCash > 300) { return m_dOrgCash - 100; } else { return m_dOrgCash; } } }; class CashContext { public: double GetResult(double dMoney) { m_pCashSuper->SetOrginCash(dMoney); return m_pCashSuper->CalcCash(); } void SetCashSuper(CashSuper *pCashSuper) { m_pCashSuper = pCashSuper; } /*void ReleaseCashSuper() { if (m_pCashSuper) { delete m_pCashSuper; m_pCashSuper = NULL; } }*/ protected: CashSuper *m_pCashSuper; }; int _tmain(int argc, _TCHAR* argv[]) { //现在商场进入打折季节,都使用打折suanfa CashSuper *pCSuper = new CashReBate; CashContext CContext; CContext.SetCashSuper(pCSuper); //CContext.SetCashSuper(new CashReturn) //CContext.ReleaseCashSuper(); double dPay = CContext.GetResult(100.0f); if (pCSuper) { delete pCSuper; pCSuper = NULL; } return 0; }
- C语言设计模式之策略模式
- 设计模式之策略模式,C++实现
- 设计模式之策略模式:简单实现
- Java实现设计模式之策略模式
- 设计模式之策略(PHP实现)
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 数据库文章留底
- Lisp语言: 在Windows下搭建CLisp环境
- 电脑一插前置USB就重启
- Apache_Shiro_使用手册
- inline
- 设计模式之策略模式,C++实现
- Java消息服务JMS详解
- 隐藏dos窗口执行exe或bat文件
- JOB计划定期执行过程
- FFmpeg中的名词解释
- 全同态加密技术文章分类
- struts2标签<s:url>
- UC_GUI LISTBOX列表控件工作学习笔记
- 设计模式之简单工厂模式,C++实现