IOC控制反转详解(定义作用及实现原理)

IOC控制反转详解(定义作用及实现原理)-mikechen

Java面试经常问到IOC控制反转,比如:IOC控制反转的作用原理等,下面我就来详解IOC控制反转@mikechen

什么是IOC控制反转

IOC,英文全称是Inversion of Control,翻译过来就是控制反转,所以很多提到IOC,就叫IOC控制反转。

 

IOC控制反转作用

IOC控制反转能够将对象之间的依赖关系转移到容器中进行管理,从而降低了对象之间的耦合性,使得程序更加灵活、可扩展和易于维护。

通过IOC容器管理对象之间的依赖关系,可以使得对象更加独立、可重用,从而提高了程序的可重用性。

 

IOC控制反转原理

IOC不是一种技术,只是一种思想,它的核心思想是将对象的创建、组装和管理的控制权交给一个容器,而不是由对象自己进行创建和管理。

在没有IOC容器之前,传统应用程序都是由我们在类内部主动创建依赖对象,如下图所示:

IOC控制反转详解(定义作用及实现原理)-mikechen

这种方式,从而导致类与类之间高耦合,难于测试,于是后面就了IOC容器。

有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,而不是由对象自己进行创建和管理。

如下图所示:
IOC控制反转详解(定义作用及实现原理)-mikechen

上图引入了IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了。

在IoC中,对象不再负责自己的创建和管理,而是被容器创建和管理,这就是IOC控制反转的核心思想。

 

IOC控制反转实现

在实现IOC的过程中,最重要的是依赖注入DI的机制。

DI的全称是Dependency Injection,中文称之为依赖注入,它与控制反转(IOC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。

IOC控制反转详解(定义作用及实现原理)-mikechen

在传统模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象。

如图所示:
IOC控制反转详解(定义作用及实现原理)-mikechen
这种方式会导致调用者与被调用者之间的耦合性增加,不利于后期项目的升级和维护。

在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。

这样,控制权由应用代码转到了Spring容器,控制权发生了反转,这就是Spring的控制反转IOC。

以上就是IOC控制反转详解,更多内容请查看:Spring IOC最全详解(定义原理及注入方式)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法