1
控制反转与依赖性反转有何关系
在网络上的许多文章中,术语“控制反转”和“依赖反转原则”似乎混为一谈并用作同义词(进一步的混乱由称为“ DI-Containers”和“ IoC-Containers”的工具所强加)。Wikipedia的一篇文章很好地解释了IoC与DI不同: 控制反转(IoC)描述了一种设计,其中计算机程序的自定义编写部分从通用的可重用库接收控制流 因此,DIP是关于让模块依赖于抽象而不是具体的实现。 而IoC则是将程序流的控制权交给一个单独的模块。您可以让此模块执行的操作之一是在运行时解析依赖关系。 这种差异看起来确实很公平,但是我从未见过有人提到过IoC原理的任何其他应用程序,除了依赖关系解析之外。Wikipedia的定义非常广泛,似乎您可以使用一个模块进行更多的工作,该模块可以根据其配置和一些内部逻辑调用自定义代码。 因此,这里有一些我还无法弄清楚的问题: IoC和DIP之间的实际关系是什么?IoC始终是实现DIP的手段吗? 为什么将依赖关系解决工具称为DI容器和IoC容器?这意味着DI和IoC是同一件事。 注意:这个问题不是DI和IoC有什么区别的重复,因为后者询问的是依赖注入,而不是依赖反转。