控制反转概述:
控制反转(Inversion of Control,缩写为IoC),是OOP中的一种设计原则,可以用来降低计算机代码之间的耦合度。
基本思想是借助于“第三方”实现具有依赖关系的对象之间的解耦。
具体实现手段分为依赖注入和依赖查找。

下边是使用控制反转前后对比图



1:依赖注入
概述:
组件不做定位查询,只提供普通的类方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过类属性或者构造函数传递给需要的对象。通过类属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造器注入(Constructor Injection)

2:依赖查找
概述:
容器提供回调接口和上下文条件给组件。EJB和Apache Avalon 都使用这种方式。这样一来,组件就必须使用容器提供的API来查找资源和协作对象,仅有的控制反转只体现在那些回调方法上,容器将调用这些回调方法,从而让应用代码获得相关资源。
结语:
相对于IoC而言,依赖注入(DI)更加准确地描述了IoC的设计理念。所谓依赖注入也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。
网友评论