代码之家  ›  专栏  ›  技术社区  ›  Sergio Tapia

SmartUI开发人员试图扩展他的视野,你能解释什么是依赖注入吗[[副本]

  •  0
  • Sergio Tapia  · 技术社区  · 14 年前

    可能重复:
    What is dependency injection?

    我读过维基百科页面。 我从一本出版社的书中读到一个清晰的解释。

    我仍然不明白它是什么,也不明白它为什么有用。

    2 回复  |  直到 8 年前
        1
  •  1
  •   Femaref    14 年前

    简言之,依赖注入意味着不创建所需的对象,而是针对接口进行编程。这样,一个类更容易被测试,更独立于其他代码。

    两个例子:

    第一个例子:

    using Core.Service.X;
    using Core.Service.Y;
    
    public class A //without injection
    {
      private ServiceX servicex;
      private ServiceY servicey;
    
      public A ()
      {
        servicex = new ServiceX();
        servicey = new ServiceY();
      }
    }
    

    在本例中,类A必须知道ServiceX和ServiceY及其实现(这是一个非常简单的示例,ServiceX和ServiceY本身可能有复杂的构造函数。

    第二个例子:

    using Core.ServiceInterfaces;
    
    public class B //without injection
    {
      private IServiceX servicex;
      private IServiceY servicey;
    
      public A (IServiceX serx, IServiceY, sery)
      {
        servicex = serx;
        servicey = sery;
      }
    }
    

        2
  •  0
  •   duffymo    14 年前

    可以将其视为一个可配置的声明性对象工厂。工厂为您提供对象,而不是调用“new”来实例化对象。