• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    浅析.net策略模式

    对于策略模式的理解:当一个业务有多种需求时候,在某个时候需要使用不同的方式来计算结果。这时候不同的方式可以理解为不同的策略来解决同样的问题。 例如:商场收银系统计算价格,1:正常计算 2:商品打折计算,3:满300减100等方式。就可以按三种策略来处理需求。

    简单的说:策略模式就是用来封装算法的,但在实践中,我们发现可以用他来封装几乎任何类型的规则,只要在分析过程中听到需要在不同的时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。

    复制代码 代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    namespace DesignModel
    {
        /// summary>
        /// 策略模式
        /// /summary>
        public class TacticsModel
        {
            public string type { get; set; }
            public virtual string GetResult()
            {
                return "";
            }
        }
        public class Normal:TacticsModel
        {
            public override string GetResult()
            {
                return "正常计算价格";
            }
        }
        public class Discount : TacticsModel
        {
            public override string GetResult()
            {
                return "按打折计算价格";
            }
        }
        public class Preferential : TacticsModel
        {
            public override string GetResult()
            {
                return "满300减100活动";
            }
        }
        public class CashContext
        {
            TacticsModel tm = null;
            public CashContext(string type)
            {
                switch (type)
                {
                    case "1":
                        tm = new Normal();
                        break;
                    case "2":
                        tm = new Discount();
                        break;
                    case "3":
                        tm = new Preferential();
                        break;
                    default:
                    break;
                 }
            }
            public string GetResult()
            {
                return tm.GetResult();
            }
        }
    }

    这种方式和简单工厂方式差不多,只是有稍微区别。 简单工厂模式需要暴漏给客户端两个类,策略模式和工厂模式的简单结合只暴漏了一个CashContext类

    客户端调用代码:

    复制代码 代码如下:

       Console.WriteLine("请计算类型1正常,2打折,3优惠:");
       string type = Console.ReadLine();
       CashContext cc = new CashContext(type);
       Console.WriteLine(cc.GetResult());

    结果:

    其中还是使用了swich ,也就是就是说增加一种需求就有更改swith语句,很是不爽,不过任何需求的变更都是需要成本的。

    只是成本的高低是有区别的。这个地方用反射技术会有更好的效果。后续会补充。

    您可能感兴趣的文章:
    • jquery获得同源iframe内body下标签的值的方法
    • 深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
    • 深入理解JavaScript系列(33):设计模式之策略模式详解
    • JavaScript设计模式之策略模式实例
    • js设置document.domain实现跨域的注意点分析
    • js兼容火狐获取图片宽和高的方法
    • js兼容火狐显示上传图片预览效果的方法
    • js同源策略详解
    上一篇:浅析.net简单工厂模式
    下一篇:浅谈c#设计模式之单一原则
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    浅析.net策略模式 浅析,.net,策略,模式,浅析,