.net – 与我实现它的方式相比,IoC Container如何实现依赖注入

要做依赖注入,我可以创建一个不同类型的数据库连接的通用字典,然后通过反射动态地实例化一个类型,然后再将它传递给需要它的对象的构造函数.

使用IOC容器时会带来什么样的差异和好处,因为它不会使我的东西比第一个解决方案更独立. IOC容器如何在内部进行?它与第一个解决方案不同吗?

如何在没有容器的情况下实施DI?你什么时候切换到IoC容器?

我的意思是除了我想到的那个之外还有其他方法来实现DI,以便我可以使用最好的方法吗?

解决方法

我想一个容器为你做了很多锅炉板代码.例如,它完全按照您的说法执行,根据反映的行为实例化一个类.许多容器还允许您根据配置文件显式配置系统.

IOC或DI仅是概念. IOC / DI概念为您提供了您所青睐的“不依赖”.实际实施可能有所不同.您可以在不使用第三方容器的情况下执行此操作 – 或者编写自己的容器.或者,您可以利用经过充分测试的第三方容器提供的功能.

如果您只想注入不同类型的数据库连接,那么您对IOC / DI的需求非常小.一般来说,IOC / DI(注意,不是容器,这只是IOC / DI的实现)为您提供完全可配置的软件,有助于单元测试(通过注入存根),自我配置等.

通常,IOC / DI在以下情况下是必需的:

>你的软件是如此庞大和复杂,没有任何一个人可以把它全部放在脑海中,或者>有许多不同的配置,您不希望自定义构建,或>在各个部分之间是如此相互依赖,你发现很难单独测试每一件

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...