IoC (Inverse of Control)是一种思想,DI(Dependency Injection)是一种设计模式,后者可以作为前者的一种实现方式。本质上是在解耦一个依赖关系。
IoC 的作用就是将 A 依赖 B ,B 依赖 C 的情况倒过来,让 B C 能够依赖处于顶端的 A 。当然这种逆天的行为,是需要第三方 D 的帮助控制,最终实现一个顶端需要什么,底端实现什么的目的,不至于由于底端修改导致整个依赖链修改。
对于 A 依赖 B 的情况,没有 IoC 的时候,A 要去主动创建 B ,这时不论如何创建还是使用 B 都是由 A 说了算;IoC 引入之后,B 由专门的容器去创建管理,这个过程 A 是不知情的,然后只在必要的时候用依赖注入 DI 的方式提供给 A 使用,故得名控制反转。