IOC控制反转
复杂的系统可以由多个对象相互协作和依赖来实现,并且对象的内部实现是透明的(并不代表用public修饰,可以通过反射,spring底层实现就用到了反射),对象与对象之间的依赖可以交由“第三方”管理,而对象与对象之间无实质的联系,这就是控制反转思想。为什么这种思想叫做控制反转呢?
未引入IOC之前,如果A对象依赖B对象,那么在A对象实例在初始化或者运行时,必须自己创建B对象的实例或者使用已经创建好的实例,那么也就意味着B对象的创建控制权在A对象的手中。
引入IOC之后,A对B的依赖交由IOC容器管理,A和B并无直接联系;A对象实例在初始化或者运行时,需要B对象,IOC容器会创建好,交由A使用,意味着B的创建控制权在第三方IOC容器手中,这也就是控制反转
使用IOC的好处是:1. 降低了类之间的耦合。2. 提升了软件的可重用度
DI依赖注入
前面说了IOC是一种思想,而DI是其具体的实现,也就是将应用系统中的各个类之间的依赖关系先剥离(也就是常说的解耦或者分离),然后在应用系统运行过程中根据应用之间的调用关系再适时地注入到目标系统中。