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

     

  • 相关阅读:
    Codeforces 451A Game With Sticks
    POJ 3624 Charm Bracelet
    POJ 2127 Greatest Common Increasing Subsequence
    POJ 1458 Common Subsequence
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1698
    HDU 1754
    POJ 1724
    POJ 1201
    CSUOJ 1256
  • 原文地址:https://www.cnblogs.com/brucezhang80/p/Table_Drive_Replace_Switch_Case.html
Copyright © 2020-2023  润新知