IOC(Inversion of Control)控制反转
IOC是对象之间解耦的理论思想,2004年,Martin Fowler探讨了同一个问题,既然IOC是控制反转,那么到底是“哪些方面的控制被反转了呢?”,经过详细地分析和论证后,他得出了答案:“获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。于是,他给“控制反转”取了一个更合适的名字叫做“依赖注入(Dependency Injection)”。他的这个答案,实际上给出了实现IOC的方法:注入。所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
IOC理解的我认为关键点
- 低耦合和无耦合的好处就是不需要关心其它类的实现,只要实现好自己就行。
- 控制反转,主动获取对象变成被动取得,获得依赖对象的过程被反转了
- 依赖注入,依赖的对象通过注入的方式获得。
- 实现IOC理论的类,可以看成一个工厂容器,IOC理论又可以说是一个工厂设计模式。
- Java中实现IOC理论是通过反射和xml文件实现的,通过反射获取xml中的配置创建对应对象,注入到需要创建的类中。
- xml配置相对于Java代码来说,更灵活和易于扩展。