在日常开发中,不少时候都会遇到if else 、  if  else if  else,如果遇到逻辑多一点的业务,那么可以考虑用Switch来代替,代码效率和识别度都比if else会好上不少,但是如果遇到更多更复杂的逻辑,一个入口可能有几十个条件判断的时候用Switch来处理,那么结果是什么?满屏的Switch  case  break。

      最近在做项目的时候就发现了这个问题,虽然不是满屏的,但是也有10多个,虽然容易阅读,但是看起来太吃力了,不断地滚动鼠标,于是就想到用委托来代替。

       1、平时通俗一点理解就是,委托可以把方法当成参数一样传递,委托是一个"特殊"的类型。

       2、委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。

二、委托的优点和缺点

       优点:1、解耦,降低代码耦合度   2、减少工作。(如上例子,不用满屏的Switch  case  break)

       缺点:让代码变得难以理解,无法知道底层的代码操作逻辑。(就好比我们日常的工作,如果上级给你交办的事情你自己去做了,你自己清楚是怎么去做的,如果你委托另外一个人去帮你做了,那么你只知道事情做好了,并不知道具体怎么做的)。

三、使用地方场景

       委托的使用最好是一次性使用,一次性使用的意思就是后期不需要去维护代码,不太改动的代码,否则时间太长,开发人员在不记得业务逻辑的情况下,会给自己挖坑,理解不了代码,把自己埋了。

     归根结底就是代码最终的目的是实现功能,基本的原则是便于理解,委托能不使用就不要使用。

四、委托的使用

       此处只简单的写了常规的委托和字典(Dictionary)+委托,因为字典加委托只需要比较一次(查一次hash表),替代Switch更好,更重要的是容易扩展。当然也可以通过工厂模式、反射等方法来替代。

1、创建委托函数

public enum Status
    {
        A = 1,
        B = 2,
        C = 3
    }
View Code

相关文章:

  • 2021-07-13
  • 2022-12-23
  • 2021-09-03
  • 2021-09-18
  • 2021-10-13
  • 2021-12-06
  • 2021-09-27
  • 2021-09-30
猜你喜欢
  • 2021-12-10
  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
  • 2021-11-26
  • 2022-02-10
相关资源
相似解决方案