首页
登录 | 注册

【大话设计模式】——策略模式Strategy

1、是什么?
    定义算法家族,分别封装起来,让他们之间互相替换,此模式让算法变化,但不会让使用者收到影响。

2、为什么?何时?
    定义一系列算法,所有这些算法完成相同的工作,只是实现不同,采用相同的方式调用所有算法,减少了各种算法类与使用算法类之间的耦合。同样可以使用简单工厂模式实现。

3、如何做?UML类图


4、示例代码
  1. #include <iostream>
  2. using namespace std;

  3. class CashSuper
  4. {
  5. public:
  6.     virtual double acceptCash() = 0;
  7. };
  8. class CashNormal : public CashSuper
  9. {
  10. public:
  11.     double acceptCash()
  12.     {
  13.         cout<<"正常收费"<<endl;
  14.         return 0;
  15.     }
  16. };
  17. class CashDiscount : public CashSuper
  18. {
  19. public:
  20.     double acceptCash()
  21.     {
  22.         cout<<"折扣收费"<<endl;
  23.         return 0;    
  24.     }
  25. };
  26. class CashContent
  27. {
  28. public:
  29.     CashContent(CashSuper* c)
  30.     {
  31.         cash = c;
  32.     }
  33.     double getResult()
  34.     {
  35.         cash->acceptCash();
  36.         return 0;
  37.     }
  38. private:
  39.     CashSuper* cash;
  40. };
  41. void main()
  42. {
  43.     cout<<"hello \n";
  44.     CashSuper* cash;
  45.     int type;
  46.     cin>>type;
  47.     switch(type)
  48.     {
  49.     case 0:
  50.             cash = new CashNormal();
  51.             break;
  52.     case 1:
  53.             cash = new CashDiscount();
  54.             break;
  55.     default:
  56.             cash = new CashNormal();
  57.             break;
  58.     }
  59.     CashContent* content = new CashContent(cash);
  60.     content->getResult();
  61. }

相关文章

  • 设计模式--命令模式
          命令模式其实和策略模式相似,都是将实现与调用解耦.      类图:            而命令模式只是更形象的模拟了实现者和调用者之间的关系.来看下一般情况下:             如果我们需要实现一个订餐的程序,一般简 ...
  • 初探Java设计模式3:行为型模式(策略,观察者等)
    行为型模式 行为型模式关注的是各个类之间的相互作用,将职责划分清楚,使得我们的代码更加地清晰. 策略模式 策略模式太常用了,所以把它放到最前面进行介绍.它比较简单,我就不废话,直接用代码说事吧. 下面设计的场景是,我们需要画一个图形,可选的 ...
  • Java集合详解3:Iterator,fail-fast机制与比较器
    具体代码在我的GitHub中可以找到 喜欢的话麻烦star一下哈 https://h2pl.github.io/2018/05/9/collection3 我的个人博客主要发原创文章,也欢迎浏览 https://h2pl.github.io ...
  • Java语言编程学习之Lambda表达式设计和架构的原则[图]
    Java语言编程学习之Lambda表达式设计和架构的原则[图]: 大家都知道,Lambda表达式是对Java语言的一点简单改进,在JDK标准类库中,运行它的方式各种各样.但是大多数的Java代码都不是由开发JDK的程序猿写的,而是像我们这样 ...
  • tips:虽然题目是写的Java程序员,但对其他语言的开发来说也会有借鉴作用. 工作一年(以内) 但是加班不代表你就可以松懈了,互联网这个行业,技术迭代的速度非常快,稍不留神你可能就out了.我还记得某位大佬说的那句话,从你入行那一刻起,你 ...
  • 你必须知道的.NET(第2版)
    你必须知道的.NET(第2版)  王涛 编著 ISBN 978-7-121-14128-7   2011年7月出版 定价:79.00元 16开 548页 宣传语:以深入浅出的笔法,触摸.NET底层和框架的有趣角落,了解.NET平台的开发.设 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号