一:IOC是什么?
即控制反转,不是什么技术,而是一种思想。IOC意味着将你创建的对象交给容器处理控制,而不是传统的在对象内部直接控制。
-
谁控制谁,控制什么:传统技术中,是程序主动去创建对象;而IOC是专门有一个容器来创建这些对象,即由IOC控制创建对象;控制什么?主要是控制了外部资源的获取
-
为何是反转,哪些方面反转:传统应用程序是在我们创建对象中主动去获取所依赖的对象;而反转则是由容器去帮忙创建及注入依赖对象;容器帮我们查找所依赖的对象,对象只是被动地接受所依赖的对象;依赖对象的获取被反转了
二:IOC能做什么?
有了IOC容器,把创建和查找依赖对象的控制权交给容器,由容器进行注入组合对象,降低了耦合;
IOC更好的体验了面向对象法则之一:好莱坞法则,别找我们,我们找你;即由容器帮对象找所依赖的对象并注入,而不是由对象主动去查找
三:DI是什么?
即依赖注入,IOC和DI只是同一个概念的不同角度的描述,控制反转的描述比较模糊
组件之间的依赖由容器在运行期间决定,即由容器将某个依赖关系注入到组件之中,提升组件的重用率,我们只需要通过简单的配置,无需任何代码描述就可指定目标需要的资源
-
谁依赖谁:当然是应用程序依赖容器
-
为什么需要依赖:应用程序需要容器来提供对象需要的外部资源
-
谁注入谁:IOC注入应用程序的对象,应用程序需要的依赖对象
-
注入了什么:注入了某个对象所需要的外部资源(包括对象,资源,常量数据)