Ioc控制反转从字眼上体现在两个概念:1,控制 2,反转
控制:到底要控制什么呢? 答:create对象的控制权,即把某一接口具体实现类的选择控制权。
反转:最初的控制权是谁的? 控制权该交给谁? 答:一般我们用到什么对象直接在调用类中new,那么一开始的控制权就是调用类。然后把控制权交给第三方决定。
IoC不够开门见山,因此业界曾进行了广泛的讨论,最终软件界的泰斗级人物Martin Fowler提出了DI(依赖注入:Dependency Injection)的概念用以代替IoC
DI依赖注入:即让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。
(容器或协作类) 如spring中的bean容器:
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="接口类" class="实现类"/> <bean id="调用类ID" class="调用类" p:接口类-ref="接口类"/> </beans>