zoukankan      html  css  js  c++  java
  • [C#] 使用表驱动法替代IF Else 和 Switch Case

      当系统功能增加时,有的时候需要用到Switch Case去判断执行方法,当功能越来越多的时候这种方法就会显得臃肿,最优的做法应该是通过表驱动取代Switch Case,下面的代码定义了用户处理的枚举,以及用户执行的相关操作。

    我们通过把方法名放到string[] 数组中,当调用的时候通过反射获取方法并执行,代码如下:

    using System;
    
    public class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please input th user name:");
            var userName=Console.ReadLine();
            UserActionProcessor ap = new UserActionProcessor();
            //Reflection:Get the name of method;
            var method = typeof(UserActionProcessor).GetMethod(GetUserActionFromTable(UserAction.LoginInSystem));
            method.Invoke(ap,new object[]{userName});
            Console.ReadLine();
        }
        //Table Drive Replace the Switch  
        static string GetUserActionFromTable(UserAction userAction)
        {
            string[] actionArray=new string[]{"Login","OpenIE","OpenChrome"};
            return actionArray[(int)userAction];
        }
        //User Action Enum
        enum UserAction
        {
            LoginInSystem,
            OpenIEBrowser,
            OpenChromeBrowser
        }
    }
    
    public class UserActionProcessor
    {
        public void OpenIE(string userName)
        {
            //Process ...
            Console.WriteLine(string.Format("{0} open IE!",userName));
        }
    
        public void OpenChrome(string userName)
        {
            //Process...
            Console.WriteLine(string.Format("{0} open Chrome!",userName));
        }
    
        public void Login(string userName)
        {
            //Process...
            Console.WriteLine(string.Format("{0} Login Success!",userName));;
        }
    }

     

  • 相关阅读:
    实验10:Problem D: STL——管道二
    实验10:Problem C: STL——呵呵型自动机
    实验10:Problem B: STL——哈哈型自动机
    实验10:Problem A: STL——整理唱片
    实验9:Problem I: 学生干部虚基类
    hihocoder1994 树与落叶 DFS+前缀和+二分
    [Offer收割]编程练习赛108
    【模板】左偏树(可并堆)
    P2993 [FJOI2014]最短路径树问题 点分治+最短路
    E
  • 原文地址:https://www.cnblogs.com/brucezhang80/p/Table_Drive_Replace_Switch_Case.html
Copyright © 2011-2022 走看看