IoC 是什么

Posted by icoding168 on 2020-03-25 17:04:16

分类: Java  

概念

IoC 全称 Inverse of Control,中文翻译为“控制反转”,是面向对象编程中的一种设计原则,可以用来降低代码之间的耦合度。IoC 不是某种具体的技术,而是一种软件工程领域的设计思想。

1996 年,Michael Mattson 在一篇有关探讨面向对象框架的文章中,首先提出了 IoC 这个概念。IoC 从字面上看有点难以理解,于是在 2004 年,Martin Fowler 提出了“哪些方面的控制被反转了?”这个问题,并且给出一个更好的命名:Dependency Injection(依赖注入)。他认为控制反转是指依赖对象的获得被反转了,对象 A 获得依赖对象 B 的过程,由主动行为变为了被动行为,控制权颠倒过来了,这就是“控制反转”这个名称的由来。

作用

大多数应用程序都是由两个或者更多的类通过彼此的组合来实现业务逻辑,在没有运用 IoC 设计原则之前,程序在类内部主动创建依赖的对象,这导致代码高度耦合并且难以维护和调试。有了 IoC 容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行依赖注入,对象与对象之间松散耦合,避免了循环依赖的问题,而且有助于代码功能复用,也方便单元测试,程序的整个体系结构变得非常灵活。