控制反转<依赖注入

时间:2010-07-12 07:35:47

标签: dependency-injection inversion-of-control terminology

我感觉不存在控制倒置这样的事情,或者说正确的术语是依赖注入。假设这个我错了吗?

我一直在努力为自己定义IoC。在这样做的过程中,我学到了很多关于IoC容器和依赖注入的知识。

刚才,我从Martin Fowler's website读到了这个:

  

因此,我认为我们需要更多   此模式的特定名称。   控制反转过于通用了   术语,因此人们发现它   混乱。因此有很多   与各种IoC倡导者讨论   我们选择了Dependency这个名字   注射。

在现代IoC世界中,依赖注入只是实现IoC的一种方式吗?

3 个答案:

答案 0 :(得分:41)

如果您接受Fowler's definition,则控制反转是一个比DI更强大的更广泛的术语,涵盖了插入框架的所有框架用法,但是框架仍处于控制之中。

例如,在.NET中,ASP.NET或Windows Presentation Foundation等框架最终处于控制之中,但提供了可用于构建的各种事件 Seams 一个应用程序。在其他平台上也是如此。

依赖注入是IoC的专业化,专门用于管理依赖关系。

答案 1 :(得分:6)

这是我和马克不同意的几点之一。在我的书中,控制反转原则same as here所以我不会重复它。

依赖注入仅仅是通过组件将依赖关系创建外部化到外部世界的行为。

管理这些依赖项(以及许多其他内容)是控制容器的反转所做的,并且使用DI作为其中的一部分,仅仅是一个实现细节。

答案 2 :(得分:4)

是的,IoC意味着类本身不控制事物,而是从外部调用。依赖注入是实现此目的的方法。

依赖注入确实是一个更具体的术语,比控制反转更明确。