• IOC的总结


        今天趁着空闲总结一下自己IOC的一些理解,希望可以帮助到有需要的人,请大牛们多多指教。

       (一)IOC

          IOC就是控制反转,给程序解耦等等,有很多博客都对它做了一些很好的讲解。在这里我也不说太多文字,直接上代码吧。

          定义了一个接口(服务)

      public interface ITestProvider
       {
            string GetUser(string name);
    
            string GetId(string name);
    
       }

          实现了这个接口

     public class TestProvider:ITestProvider
       {
    
           private readonly string _userName;
           public TestProvider(string userName) {
               this._userName = userName;
           }
           
           public string GetUser(string name)
           {
               return this._userName;
           }
    
           public string GetId(string name)
           {
               return this._userName + "Id";
           }
       }

        定义了一个控制器使用上面的接口(TestController是一个组件,里面有对

       public class TestController
        {
            private readonly string _userName;
            private readonly ITestProvider _testProvider;
    
            public TestController(ITestProvider testProvider, string userName){
                this._userName = userName;
                this._testProvider = testProvider;
            }
    
    
            public string GetUser(string name){
                return _testProvider.GetUser(name);
            }
        }

    现在要使用TestController

       ITestProvider testProvider =new TestProvider("zz"); //里氏转换原则
                TestController testController=new TestController(testProvider,"ce");
                Console.WriteLine(testController.GetUser("ss"));

    //在写代码的时候,我们按照上面这种写法,我觉得问题也不是很大(再不是很大型的项目上)

    //从上面这个例子中,我们可以看到这个最简单的道理。
    //TestController,作为高层领导,要依赖于底层的ITestProvider。如果底层的ITestProvider一改变。那么高层领导也要跟着改。这就和我们现实生活中不符合了。下层员工牵着领导的鼻子走,显然领导就太没地位了。
    //那现在领导肯定是不干的了,那么怎么让领导舒服一点呢。这个时候领导就去找个第三方的人(可能是秘书)来负责管理这些底层员工,自己和第三方有关系即可。其他事情都交给第三方。
    //在我们编程也是一样的,高层TestController,为了好好管理底层,不让自己受到底层的牵连,所以就引入了IOC容器。

       (二)IOC容器

            控制反转容器使用上述原则(简而言之)管理类。也就是说,他们的创建,销毁,生命周期,配置和依赖关系。这样,类不需要获取和配置它们所依赖的类。这极大地减少了系统中的耦合,并因此简化了重用和可测试性。

         (三) IOC的优缺点

           优点上面已经说完了。下面讲讲缺点;

            (1) 你要引入一个第三方,把系统变得复杂了一点。

            (2) 引入一个第三方了,自己赚的也少了,所以说如果你系统不是很大,你引入第三方来管理的话,我觉得不是很合理的。如果你项目庞大,引入第三方还是非常有必要的。

            (3) 到编程领域的话呢,就是一般都是通过XML文件来管理依赖的,所以你要把这个XML维护好。

  • 相关阅读:
    匿名内部类详解
    成员内部类详解
    内部类
    局部内部类详解
    switch
    Enum 类型
    循环
    标号
    软件开发模型
    RUP
  • 原文地址:https://www.cnblogs.com/gdouzz/p/8004212.html
Copyright © 2020-2023  润新知