IoC(Inverse of COntrol:控制反转)是一种设计思想或者说是某种模式。这个思想就是 将原本在程序中手动创建对象的控制权交给第三方比如 IoC 容器。对于我们常用的 Spring 框架来说,IoC 容器实际上就是个 Map(key, value),Map 中存放的是各种对象。不过IoC 容器在其他语言中也有应用,并非 Spring 特有。
IoC 最常见以及最合理的实现方式叫做依赖注入(Dependency Injection,简称 DI)。
老马(Martin Fowler)在一篇文章中提到将 IoC 改名为 DI,原文如下,原文地址:
老马的大概意思是 IoC 太普遍并且不表意,很多人会因此而迷惑,所以,使用 DI 来精确指名这个模式比较好。