• 策略模式


    该模式假定场景为商场打折促销,“正常收费”,“打几折”,“满减”,等活动。

    这个场景中有如下对象:

      选择促销方法对象

      促销方法对象

      结算对象

      

    结构图如上

    代码实现:

     1 public class CashContext
     2     {
     3         CashSuper cs = null;
     4         public CashContext(string type) {
     5             switch (type)
     6             {
     7                 case "正常收费":
     8                     cs = new CashNormal();
     9                     break;
    10                 case "八折":
    11                     CashRebate cr = new CashRebate(0.8);
    12                     cs = cr;
    13                     break;
    14                 case "满300减100":
    15                     cs = new CashReturn(300, 100);
    16                     break;
    17                 default:
    18                     break;
    19             }
    20         }
    21 
    22         /// <summary>
    23         /// 返回核算金额
    24         /// </summary>
    25         /// <param name="money"></param>
    26         /// <returns></returns>
    27         public double GetResult(double money) {
    28             return cs.acceptCash(money);
    29         }
    30     }
    Context
    1 public abstract class CashSuper
    2     {
    3         /// <summary>
    4         /// 核算费用
    5         /// </summary>
    6         /// <param name="money"></param>
    7         /// <returns></returns>
    8         public abstract double acceptCash(double money);
    9     }
    抽象类

    这是简单工厂融合了策略模式的一种实现。在context中通过switch创建不同促销对象,这样的好处在于其他开发人员只了解context就可以了。单纯的使用工厂模式则需要多了解2个类,这也给开发带来的难度

    策略模式是一种定义一系列算法的方法,算法完成的都是相同的工作,只是实现不同。

  • 相关阅读:
    Git 使用规范流程
    关于Python的super用法研究
    python中try except处理程序异常的三种常用方法
    break 和 continue 语句, 以及循环中的 else 子句
    杂记(python)
    Request和Response
    MVC项目开发步骤
    Web中单元测试步骤
    JSP中的细节
    WEB中地址的写法
  • 原文地址:https://www.cnblogs.com/cuijl/p/8111840.html
Copyright © 2020-2023  润新知