zoukankan      html  css  js  c++  java
  • 策略模式重构条件语句

    通过策略模式来重构优化代码里面的switch/case分支代码。极大程度上提高了程序的扩展性。当然,如果分支比较多,每次都需要新增加一个类,这的确是有点麻烦,可以考虑使用反射来实现。
    代码:

    namespace DP
    {
        public enum State
        {
            Alaska,
            NewYork,
            Florida
        }
    
        public class CalculateShippingAmount 
        {
            public CalculateShippingAmount(IDictionary<State, IGetShippingAmount> dic) => _dic = dic;
    
            private IDictionary<State, IGetShippingAmount> _dic { get; set; }
    
            public decimal Calculate(State state) => _dic[state].GetAmount();
        }
    
        public interface IGetShippingAmount
        {
            decimal GetAmount();
        }
    
        #region 具体地址的实现
        // 具体
        public class GetAlaskaShippingAmount : IGetShippingAmount
        {
            public decimal GetAmount() => 15;
        }
    
        public class GetNewYorkShippingAmount : IGetShippingAmount
        {
            public decimal GetAmount() => 10;
        }
    
        public class GetFloridaShippingAmount : IGetShippingAmount
        {
            public decimal GetAmount() => 3;
        }
        #endregion
    
    }
    

    调用:

    #region 策略模式重构 switch...case...
            static void SwitchToStrategy()
            {
                var dic = new Dictionary<State, IGetShippingAmount>
                {
                    {State.Alaska,  new GetAlaskaShippingAmount() },
                    {State.Florida, new GetFloridaShippingAmount() },
                    {State.NewYork, new GetNewYorkShippingAmount() }
                };
    
                var calculate = new CalculateShippingAmount(dic);
                var result = calculate.Calculate(State.Florida);
                Console.WriteLine($"{State.Florida.ToString()}返回{result}");
            }
            #endregion
    

    参考:使用策略模式重构switch case 代码

  • 相关阅读:
    pandas中的时间序列基础
    Python中的进程
    Pandas透视表和交叉表
    Pandas分组级运算和转换
    Python中的线程详解
    Pandas聚合
    Python面试题整理
    Pandas分组
    暑假集训 || 动态规划
    DFS || HDU 2181
  • 原文地址:https://www.cnblogs.com/zhiyong-ITNote/p/10981236.html
Copyright © 2011-2022 走看看