zoukankan      html  css  js  c++  java
  • C#一定要避免程序中很多的依靠

      01第一节:什么是依靠?
      ASP.NETCoreMvc中的依靠与咱们现实生活中的依靠意义是一样的,例如,小明是个小孩子,需求靠爸爸和妈妈的抚育才能长大,因而,小明就依靠于爸爸和妈妈。
      再比方,小强在IT公司上班,那么小强的收入就依靠于公司或作业。小强不作业,就没有收入,只要作业了才有收入,因而,小强和作业之间存在依靠关系。
      而在C#程序中,类和类之间也存在依靠,例如:在C1类中使用到了C2类,那么C1类就依靠于C2类。
      代码如下:


      namespaceYidosoft.Edu.CoreMvc.Test{publicclassC2{publicvoidRun(){Console.Write("这是C2类。");}}}
      这个类是C2类,其中有一个Run()办法,并输出一段文本信息。
      namespaceYidosoft.Edu.CoreMvc.Test{publicclassC1{publicvoidGO(){C2c2=newC2();c2.Run();}}}


      此刻,在C1类中实例化了C2类,并还调用了C2类中的Run()办法。
      这个时分,C1类的正常运转是依靠于C2类的,也便是C1依靠于C2。
      02第2节:依靠倒置
      假如你的ASP.NETCoreMvc中存在大量的依靠,则在程序运转或修改时,就会存在大量的费事。会呈现动一处而动全身,使程序越来越软弱。
      因而,咱们需求一种办法来处理这种依靠问题,使程序中的依靠性越少越好。
      依靠倒置便是用来处理程序中大量呈现依靠的问题,具有5大准则:
      上层模块不应依靠于基层模块,而是共同依靠于第三方的一个笼统。类是笼统的,目标是具体的,具体要依靠于笼统,但是笼统绝对不能依靠于具体。关于上基层的了解很关键,上层便是使用者,如上比如中的C1,而基层便是被使用者,如上比如中的C2。
      实际上,C1是不应该依靠于C2的,因为C2类发生了改变之后,会直接传送到C1,这样C1也会发生改变,具有连锁反应。
      下面,咱们依据依靠倒置准则,将上面的C1和C2进行修改,代码如下:
      IC2.cs文件的代码如下:
      namespaceYidosoft.Edu.CoreMvc.Test{publicinterfaceIC2{voidRun();}}
      这是一个接口,接口是笼统的,没有具体实现,只是界说一些规矩。
      C2.cs文件代码如下:
      namespaceYidosoft.Edu.CoreMvc.Test{publicclassC2:IC2{publicvoidRun(){Console.Write("这是C2类。");}}}
      将C2承继于IC2,它们存在承继关系。这样IC2就笼统出来了。
      C1.cs文件的代码如下:
      namespaceYidosoft.Edu.CoreMvc.Test{publicclassC1{publicvoidGO(){IC2c2=newC2();c2.Run();}}}此刻,在C1中,咱们是使用了IC2类型的变量来接纳C2的实例化目标。
      经过以上的代码修改完结之后,就符合依靠倒置的准则,让C1不再依靠于C2,而是依靠于IC2这个笼统接口。
      假如C2类发生了改变,是不会影响到C1类的,因为在C1中,咱们使用到的是IC2接口中的办法,而不是C2中的办法。
      现在,咱们将C1的代码放在Main()办法中:
      usingSystem;usingYidosoft.Edu.CoreMvc.Test;namespaceConsoleApp1{classProgram{staticvoidMain(string[]args){C1c1=newC1();c1.GO();Console.ReadKey();}}}
      在Program.cs类中,需求增加C1/C2/IC2所在的命名空间,然后在Main()办法中实例化C1类,并在目标中拜访GO()办法。
      运转一下成果:


      此刻,已经在C1中执行了IC2接口中的办法,并输出内容。
      在上面的比如中,咱们具体讲解了什么是依靠,经过比如,咱们了解依靠存在很大的问题,假如程序中存在很依靠,就会让咱们天天在改程序,开发效果极低。而经过依靠倒置的准则,笼统出来一个接口,此刻,让使用具体的目标的类依靠于笼统接口,就处理了依靠问题,这是对程序开发的一种规划准则。
      所以,各位开发者,在开发程序时,不要堆代码,也不要开端嫌费事,建立许多的接口和笼统类,目的便是为了后期更好的维护和程序的运转。
      且开发起来也不那么费力,让测试者也发现不了问题,对一个程序员来说,没有问题的程序才是对自己最大的尊重。

  • 相关阅读:
    2020Python作业——类与对象
    图文存储常识:单机、集中、分布式、云、云原生存储
    宜泊科技加入阿里云原生合作伙伴计划,共建智慧停车新生态
    dubbogo 3.0:牵手 gRPC 走向云原生时代
    千万商家的智能决策引擎AnalyticDB如何助力生意参谋双十一
    我在阿里云做前端代码智能化
    网络病毒源的排查(2005年3月22日维护记录)
    在页面中控制媒体流的起播点和播放长度
    注意服务器系统日期对防病毒软件的影响
    修改SQL SERVER虚拟服务器IP的问题
  • 原文地址:https://www.cnblogs.com/lyyzhi/p/12813277.html
Copyright © 2011-2022 走看看