专题一 IOC
1.接口以及面向接口编程
a.结构设计中,分清层次以及调用关系,每层只向外(或者上层)提供一组功能接口,各层间仅依赖接口而非实现类这样做的好处是,接口实现的变动不影响各层间的调用,这一点在公共服务中尤为重要。
b.“面向接口编程”中的“接口”,是用于隐藏具体实现,和实现多态性的组件 。
2.什么是IOC
控制反转(inversion of control),控制权的转移,应用程序本身不负责依赖对象的创建和维护。而是由外部容器负责创建和维护。(我们不负责对象的创建,由外部(这里指的是spring容器)容器来创建,我们来使用)
下面是一个spring 官网的图片来说明这个关系。
实现IOC的方法:DI(依赖注入,dependency injection)是其(控制反转IOC的)一种实现方式。所谓依赖注入,就是由IOC容器,在运行期间,动态的将某种依赖关系注入到对象之中。
IOC的目的:创建对象并且组装对象之间的关系。这个怎么理解呢?在初始化的时候,会创建一系列的对象,同时它能够把对象之间的这种依赖关系通过注入的方式组织起来。
到底是什么被反转了,Martin Fowler经过分析,得出了答案,“ 获得依赖对象的过程被反转了”,获得依赖的过程由自身管理,变成了由IOC容器主动注入。
接下来我们进行生动形象的描述IOC,我们将IOC与房屋的中介做一个比喻:
房屋中介: IOC
1.找中介 1.找IOC容器
2.中介介绍房子 2.容器返回对象
3.租房,入住 3.使用对象
spring 中的对象叫做 bean
自从有了IOC之后:
不必自己创建对象,因为IOC机制已经提供了。
面向接口编程,IOC隐藏了实现
不用再管理对象了,IOC管理了。