词条统计
浏览次数:5268 次
编辑次数:2次 历史版本
最近更新:2013/6/20
创建者:掷鸡蛋者

回顾一下前面的流程:CategoryController 依赖于 ICategoryService 提供的服务,至于具体的 ICategoryService 是什么,则由 wojilu 的依赖注入容器提供,这个容器根据配置文件,提供相应的实现。如果配置文件中没有,则保持 CategoryController 构造函数中的默认实现。

也就是说对象之间的依赖关系,CategoryController 依赖什么,并不是由CategoryController 自己控制的,而是由一个容器控制的。这个wojilu MVC framework背后的容器,控制着 CategoryController 和其他对象的依赖关系。这种控制关系的转换,有个专门术语,叫“控制反转(Inversion of Control)”,简写成 IOC。

显而易见,IOC是一个糟糕的术语,它辞不达意,需要我们完全理解整个解耦过程才能明白。依赖注入(Dependency Injection) 则明白晓畅很多,完全清晰的描述了将对象之间的依赖关系再分配这一层意思。

基本上,依赖注入(Dependency Injection=DI) 和控制反转(Inversion of Control=IOC)可以看做是同一个概念(实际稍有区别,控制反转范围稍广)。虽然多个术语让人费解,但关键还是理解整个解耦的过程。

总结:wojilu MVC framework默认提供了依赖注入容器,可以让您轻松的将控制器对service的依赖解耦。

更多信息请参考:http://martinfowler.com/articles/injection.html