zoukankan      html  css  js  c++  java
  • 策略模式

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

    这个场景中有如下对象:

      选择促销方法对象

      促销方法对象

      结算对象

      

    结构图如上

    代码实现:

     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个类,这也给开发带来的难度

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

  • 相关阅读:
    asp.net 生成静态页
    修改数据库字段以及字段类型
    int ,int?,int??
    ASP.NET JS常用方法类
    遍历repeater中的控件的几种方式
    .net获取ip地址
    asp.net中DataList和Repeater的使用
    Web.config中注册用户控件和自定义控件
    dos 必知八项命令
    ASP.NET配置文件Web.config
  • 原文地址:https://www.cnblogs.com/cuijl/p/8111840.html
Copyright © 2011-2022 走看看