什么是依赖注入?为什么我要使用它?

时间:2009-06-08 13:13:29

标签: c# dependency-injection

  

可能重复:
  What is dependency injection?

我团队中的其他开发人员一直在谈论依赖注入。我在维基百科上查了一下,但我仍然不明白究竟是什么,或者我想在我的设计中使用它。如果你有任何好的例子,说明你何时使用它或什么时候不应该这样可以帮助我。感谢

4 个答案:

答案 0 :(得分:0)

可能有帮助的另一个参考术语是“控制反转”。

不是使用依赖关系和假设来构建您的软件,而是继续使用该应用程序,IoC或DI允许您指定一个必须由其他组件满足的接口,然后在运行时提供映射用于执行应用程序的接口满足组件(通常在服务容器中,提供IoC满足服务作为各种服务解析服务)。

这种抽象使您可以更容易地使用新版本甚至是全新的支持技术来替换不再满足组织需求的实施,并且更改的范围更小,从而降低风险。

Castle Windsor是IoC容器的一个.Net实现。

答案 1 :(得分:0)

你可能会发现这个article对理解这个想法非常有用。

这个想法是帮助你解开你的条款,以便每个单独的类可以独立使用或测试。

答案 2 :(得分:0)

我发现dependency injection article from Misko Hevery非常具有说明性,包括很好的例子(java)。看看有关该主题的系列文章。

答案 3 :(得分:0)

基本思想是,当一个对象需要其他一些其他工作时(例如,数据库连接),而不是在内部创建该对象,该对象被“注入”到对象中,通常是作为一个构造函数参数,或者在使用对象之前设置的公共属性。

这样做的好处是可以在外部更改已使用对象的值(如果将对象声明为接口,则尤其如此)。这种情况的一个常见用途是用模拟对象替换具体对象以进行单元测试。