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));;
        }
    }

     

  • 相关阅读:
    P3899 [湖南集训]谈笑风生
    bzoj3252: 攻略
    批量创建用户20个和密码
    创建100个目录dir1-dir100一键完成
    SVM的优缺点
    Python zip() 函数
    经典博客4
    python的空格和tab混用报错问题
    Python的functools.reduce用法
    matplotlib显示AttributeError: 'module' object has no attribute 'verbose'
  • 原文地址:https://www.cnblogs.com/brucezhang80/p/Table_Drive_Replace_Switch_Case.html
Copyright © 2011-2022 走看看