依赖注入容器是什么?它有什么作用?

13

我一直在阅读有关DI的内容,它似乎是一个足够简单的概念。但我不理解容器。假设我想创建自己的容器,会使用诸如“检测”之类的动词,但我不明白容器如何“检测”到新的依赖对象已被创建,并知道注入其依赖项。对我来说,容器就像是一个经过强化的工厂。

有人能解释一下容器实际上是如何实现的,或者给我指点一些资源吗?

谢谢!

2个回答

14

这是从Windsor文档中提取的

控制反转

控制反转是框架使用的一种原则,使得开发人员可以扩展框架或使用框架创建应用程序。其基本思想是,框架知道程序员的对象并对它们进行调用。

这与使用API相反,其中开发人员的代码对API代码进行调用。因此,框架反转了控制权:不是开发人员的代码在掌控,而是框架基于某些刺激进行调用。

您可能曾经处于这种原则下开发的情况下,尽管您并不知道它。

控制反转容器

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

由于有人认为“控制反转”是“控制反转容器”的同义词,因此会产生一些混淆。如上所述,控制反转是一个更广泛的原则。

通常人们认为这一切都与“注入”有关,并宣传说这是IoC容器的主要目的。事实上,“注入”是一种减少耦合性的手段,而不是主要目的。


2

你可能想读一下这本书《.NET中的依赖注入》...我已经读过了,强烈推荐你阅读。它首先对DI进行了简洁而深刻的解释,然后展示了DI在现实世界应用中的代码和模式。

从这本书中,简单地说...

"DI container is the technology used to support the DI technique" Page 55

1
没错。顺便说一下,Mark Seeman 在 stackoverflow 上积极参与,你可以很容易地联系到他并直接向他询问,我相信。 - Renato Gama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接