我一直在阅读有关DI的内容,它似乎是一个足够简单的概念。但我不理解容器。假设我想创建自己的容器,会使用诸如“检测”之类的动词,但我不明白容器如何“检测”到新的依赖对象已被创建,并知道注入其依赖项。对我来说,容器就像是一个经过强化的工厂。
有人能解释一下容器实际上是如何实现的,或者给我指点一些资源吗?
谢谢!
我一直在阅读有关DI的内容,它似乎是一个足够简单的概念。但我不理解容器。假设我想创建自己的容器,会使用诸如“检测”之类的动词,但我不明白容器如何“检测”到新的依赖对象已被创建,并知道注入其依赖项。对我来说,容器就像是一个经过强化的工厂。
有人能解释一下容器实际上是如何实现的,或者给我指点一些资源吗?
谢谢!
这是从Windsor文档中提取的
控制反转
控制反转是框架使用的一种原则,使得开发人员可以扩展框架或使用框架创建应用程序。其基本思想是,框架知道程序员的对象并对它们进行调用。
这与使用API相反,其中开发人员的代码对API代码进行调用。因此,框架反转了控制权:不是开发人员的代码在掌控,而是框架基于某些刺激进行调用。
您可能曾经处于这种原则下开发的情况下,尽管您并不知道它。
控制反转容器
控制反转容器使用上述原则(简而言之)来管理类。即它们的创建、销毁、生命周期、配置和依赖性。这样,类就不需要获取和配置它们所依赖的类。这极大地减少了系统中的耦合度,并简化了重用和可测试性。
由于有人认为“控制反转”是“控制反转容器”的同义词,因此会产生一些混淆。如上所述,控制反转是一个更广泛的原则。
通常人们认为这一切都与“注入”有关,并宣传说这是IoC容器的主要目的。事实上,“注入”是一种减少耦合性的手段,而不是主要目的。
你可能想读一下这本书《.NET中的依赖注入》...我已经读过了,强烈推荐你阅读。它首先对DI进行了简洁而深刻的解释,然后展示了DI在现实世界应用中的代码和模式。
从这本书中,简单地说...
"DI container is the technology used to support the DI technique" Page 55