最早看到“向依赖关系宣战”这篇文章是在《程序员》杂志上的。当时流行讨论ioc di等概念,这篇文章一出,似乎已经将这些混乱的东西讲清楚了。我就是从这篇文章开始理解IoC阿、DI的概念的。
现在看来这篇文章确实比较详细,但是反复看的话似乎感觉比较罗嗦。而且通过这两年的实践过后,我发现其实这几个概念在描述时还是有偏差的。
下面有些质疑之处:
1。 IoC与DI,马丁同学提出的依赖注入。。这个名词表面上怎么看都和控制反转扯不上关系。但是他又说“。。。。应该叫DI”。结果所有人就把DI与IoC等同,甚至就把DI当作IoC的一个别名来用。。。
我到感觉DI与IoC是指同以概念的不同方面。DI强调的是“依赖的形成”即,框架或容器如何得到需要运行的“实现(implements)”的。而IoC本身概念是强调整体主控权与“库”调用方式相反。即由框架或容器主导主控权。或者说依赖于控制权相反。
2。IoC与依赖倒置。
文中似乎没有就两者关系进行详细说明。
个人感觉IoC其实就是以依赖倒置为基础的。IoC是在特定环境中的DI特例,并且关注到了“实现”与“使用者”依赖关系产生的问题,(因为事实上调用时还是存在依赖关系的。)所以需要有“注册”这个过程。但是IoC并没有强调“注册”。