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

     

  • 相关阅读:
    PHP里文件的查找方式及写法
    上传文件
    用ajax对数据进行查看人员信息
    ajax实现分页
    jquery做个日期选择适用于手机端
    PHP用ajia代码写三级联动下拉
    JSON数据的定义
    jquery做一些小的特效
    对jquery操作复选框
    使用 LUT 模拟光照
  • 原文地址:https://www.cnblogs.com/brucezhang80/p/Table_Drive_Replace_Switch_Case.html
Copyright © 2011-2022 走看看