控制反转<dependency injection
我感觉到没有控制倒置这样的东西,或者说正确的术语是dependency injection。 我错了吗?
我一直试图为我自己定义IoC。 在这样做的过程中,我学到了很多关于IoC容器和dependency injection的知识。
刚才我从Martin Fowler的网站上看到这个消息:
因此,我认为我们需要一个更具体的名称为这种模式。 控制反转是一个过于笼统的术语,因此人们感到困惑。 因此,与各种IoC倡导者进行了大量的讨论,我们决定使用Dependency Injection这个名字。
现代IoC的世界是不是dependency injection只是实现IoC的一种方式?
如果您接受Fowler的定义 ,则控制反转(Inversion of Control)是一个比DI 更广泛的术语,涵盖了插入框架的所有框架用法,但框架仍在控制之中。
例如,在.NET中,诸如ASP.NET或Windows Presentation Foundation之类的框架最终得到了控制,但提供了各种可用于构build应用程序的事件和Seams 。 其他平台也是如此。
dependency injection是IoC的一个专门化,专门用于pipe理依赖关系。
这是我和Mark不同意的几点之一。 在我的书中,控制反转原理 和这里是一样的,所以我不会重复它。
dependency injection仅仅是一个外部化组件依赖于外部世界的行为。
pipe理这些依赖关系(还有很多其他的东西)是控制容器的反转操作,而将DI作为其一部分,仅仅是一个实现细节。
是的,IoC意味着class级本身不控制事物,而是从外部调用。 dependency injection是这样做的方式。
dependency injection确实是一个更具体的术语,比控制的倒置更明确。