我感觉不存在控制倒置这样的事情,或者说正确的术语是依赖注入。假设这个我错了吗?
我一直在努力为自己定义IoC。在这样做的过程中,我学到了很多关于IoC容器和依赖注入的知识。
刚才,我从Martin Fowler's website读到了这个:
因此,我认为我们需要更多 此模式的特定名称。 控制反转过于通用了 术语,因此人们发现它 混乱。因此有很多 与各种IoC倡导者讨论 我们选择了Dependency这个名字 注射。
在现代IoC世界中,依赖注入只是实现IoC的一种方式吗?
答案 0 :(得分:41)
如果您接受Fowler's definition,则控制反转是一个比DI更强大的更广泛的术语,涵盖了插入框架的所有框架用法,但是框架仍处于控制之中。
例如,在.NET中,ASP.NET或Windows Presentation Foundation等框架最终处于控制之中,但提供了可用于构建的各种事件和 Seams 一个应用程序。在其他平台上也是如此。
依赖注入是IoC的专业化,专门用于管理依赖关系。
答案 1 :(得分:6)
这是我和马克不同意的几点之一。在我的书中,控制反转原则是same as here所以我不会重复它。
依赖注入仅仅是通过组件将依赖关系创建外部化到外部世界的行为。
管理这些依赖项(以及许多其他内容)是控制容器的反转所做的,并且使用DI作为其中的一部分,仅仅是一个实现细节。
答案 2 :(得分:4)
是的,IoC意味着类本身不控制事物,而是从外部调用。依赖注入是实现此目的的方法。
依赖注入确实是一个更具体的术语,比控制反转更明确。