-
DI(依赖注入)其实就是IOC的另外一种说法,DI是由Martin Fowler 在2004年初的一篇论文中首次提出的。他总结:
控制的什么被反转了?就是:获得依赖对象的方式反转了。主动变被动。
-
IoC和DI由什么关系呢?其实它们是同一个概念的不同角度描述。由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。
这句话该如何理解呢?
从上面这句话我们知道,依赖注入是后面提出的。
(1)同一个概念:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在 传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,而是通过依赖Spring容器主动创建实例,然后注入调用者。
(2)不同角度(层面):
1)控制反转:控制反转是站在调用者控制权的角度(层面)来看的。主动变被动,控制权反转。
2)依赖注入:依赖注入是站在调用者获得依赖对象的方式的角度(层面)来看的。调用者通过依赖注入的方式调获得依赖对 象。
当然,如果站在其他角度,肯定还有其他不同的见解。只不过这是名人说的,并且被世界认同,经过很长时间都没有被否定,并写在教科书上,说明这两个不同角度定义的见解是非常重要的,所以我们要理解记忆。
控制反转(Ioc)和依赖注入(DI)为什么说是是同一个概念的不同角度描述呢?
最新推荐文章于 2022-05-06 22:57:37 发布