简析Spring IoC的原理与优点

若要理解Spring IoC的优点,首先要理解控制反转的思想。控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统(IOC容器),将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
控制是否被反转其实正是框架和库(Framework and Library)的区别。 
客户程序员使用库,框架使用客户程序员。 
对于一个库而言,用户程序员使用的方式是主动调用它,这是通常情况的做法,也就是“正向”控制;而对于一个框架,往往将用户程序员编写的代码注册到框架中,最后由框架来调用用户程序员编写的代码,这就构成了控制反转。也就是说,控制反转的关键在于“控制者”是谁。对于一个库而言,复用的可能只是算法和数据结构;而对于一个框架而言,复用的往往还有控制流逻辑,这也是控制反转的结果。
通过以上的描述,可以看到似乎有点回调的感觉了。

简析Spring IoC的原理与优点_第1张图片
ioc的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处: 
- 第一,资源集中管理,实现资源的可配置和易管理。 
- 第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。
也就是说,甲方要达成某种目的不需要直接依赖乙方,它只需要将想要达到的目的告诉第三方机构就可以了。比如甲方需要一双袜子,而乙方它卖一双袜子,它要把袜子卖出去,并不需要自己去直接找到一个买家来完成袜子的卖出。它也只需要找第三方,告诉别人我要卖一双袜子。这下好了,甲乙双方进行交易活动,都不需要自己直接去找卖家与买家,相当于程序内部开放接口,卖家由第三方作为参数传入。甲乙互相不依赖,而且只有在进行交易活动的时候,甲才和乙产生联系。反之亦然。这样做什么好处么呢,甲乙可以在对方不真实存在的情况下独立存在,而且保证不交易时候无联系,想交易的时候可以很容易的产生联系。甲乙交易活动不需要双方见面,避免了双方的互不信任造成交易失败的问题。因为交易由第三方来负责联系,而且甲乙都认为第三方可靠。那么交易就能很可靠很灵活的产生和进行了。这就是ioc的核心思想。在实际生活中常见的第三方支付平台和电子商务平台就是这样的道理。利用庞大的ioc容器,交易双方之外的第三方,提供可靠性可依赖可灵活变更交易方的资源管理中心。另外人事代理也是雇佣机构和个人之外的第三方。
在以上的描述中,尚学堂陈老师从中为大家提炼了两个专业词汇:依赖注入和控制反转。所谓的依赖注入是甲方开放接口,在它需要的时候,能够将乙方传递进来(注入);所谓的控制反转,甲乙双方不相互依赖,交易活动的进行不依赖于甲乙任何一方,整个活动的进行由第三方负责管理。这就是spring IoC的思想所在。
 

转载于:https://my.oschina.net/u/3628059/blog/1549474

你可能感兴趣的:(简析Spring IoC的原理与优点)