控制反转
控制反转的清楚解释:http://zh.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%AC
(不得不鄙视一下百度百科)
虽然wiki上已经讲得很清楚了,但是把自己理解的付诸于纸上,这才是自己的。
控制依赖:
class A , class B
若(1)A调用了B中的方法(2)A是B的子类(3)A依赖于C,而C又依赖于B,
符合以上三个条件,则说明A依赖于B。
循环依赖:
A依赖于B,B又依赖于A,造成循环依赖。 循环依赖说明A,B不能单独运行。
消除依赖:
若A调用B中的某个方法,可以这样做:将A调用B中的所有方法的声明放在一个接口I中,B实现接口I,而A调用接口I中的方法。现在A,B都依赖于接口I。
需要注意的是,类Y可能还依赖于其他类。在应用反转之前,X依赖于Y,从而也间接依赖于Y所依赖的所有“其他类”。应用控制反转之后,不仅X对Y的直接依赖,且前面提到的那些所有的间接依赖也消除了。而新引入的接口I则不依赖于任何类。
spring中使用IOC的好处:http://blog.csdn.net/centre10/article/details/6123649
IOC的好处是:降低耦合性:某个类的一个属性,以前是该类自己控制,而引人Spring后,这个类的属性由Spring控制。
Spring IOC的模拟所做的事情是:在xml文件配置好相应的bean,设置注入关系。在解析xml时候对bean进行初始化同时对相应属性进行注入。