## 关于IOC的理解(各种理解的综合)
IoC具体作用:
举一个例子:b依赖于a a在b内部 之前的写法就是a写到b里面
但是当 a要改的时候(构造方法 属性等发生变化) b里的new a的代码就要改变 如果有100个类引入了a 则要改变100次
有了ioc容器之后 我只用该表容器中的bean,其他的对象照常通过id来得到a 其他地方的代码根本不用变化 也就是说其他类与a的耦合性极低。
IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。
传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;
有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
IoC对编程实现由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。
ioc到底反转了什么
如果对象A依赖于B 所以当对象甲依赖于对象B,那么对象a在初始化或者运行到某一点的时候,自己必须主动去创建对象乙或者使用已经创建的对象B.无论是创建还是使用对象B,控制权都在自己手上。
引入ioc容器之后,当B要用a的时候 不需要自己去new对象而是由容器注入一个对象a给b
翻转的是“到底是谁在new对象”
IoC和DI由什么关系呢?其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。