控制反转&依赖注入

Inversion of Control < Dependency Injection

我觉得没有控制反转之类的事情,或者更确切地说,正确的术语是依赖注入。我假设这个是错的吗?

我一直在为自己定义国际奥委会。通过这样做,我学到了很多关于IOC容器和依赖注入的知识。

刚才,我从马丁·福勒的网站上读到:

As a result I think we need a more
specific name for this pattern.
Inversion of Control is too generic a
term, and thus people find it
confusing. As a result with a lot of
discussion with various IoC advocates
we settled on the name Dependency
Injection.

在现代国际奥委会的世界里,依赖注入不是实现国际奥委会的一种方式吗?


如果您接受福勒的定义,那么控制反转比DI要广泛得多,它涵盖了您插入框架的所有框架使用,但是框架仍然处于控制之中。

例如,在.NET中,框架如ASP.NET或Windows演示基金会最终得到控制,但提供各种事件和接缝,可以用来构建应用程序。其他平台也是如此。

依赖注入是IOC的一个专门化,它专门应用IOC来管理依赖关系。


这是我和马克不同意的几点之一。根据我的书,控制原理的反转和这里是一样的,所以我不会再重复它。

依赖注入仅仅是外部依赖于组件对外部世界创建依赖的行为。

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


是的,国际奥委会的意思是班级本身不控制事物,而是从外部召唤。依赖注入就是这样做的方法。

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