标题:
依赖注入和Butter Knife源码分析(1)
[打印本页]
作者:
look_w
时间:
2019-3-8 19:01
标题:
依赖注入和Butter Knife源码分析(1)
一、控制反转和依赖注入:
两图的区别:
(1)图一有高度的耦合性,多个对象相互依赖,如果ObjectA想让ObjectB跟随自己转动应该怎么做?
在ObjectA中创建一个ObjectB的对象,然后调用ObjectB的某个方法进行转动。ObjectA主动控制ObjectB的创建和行为。
(2)图二在ABCD中创建了一个第三方容器,第三方容器控制ObjectA、B、C、D的创建和转动。如果ObjectA想让ObjectB跟随自己转动应该怎么做?
A告诉第三方容器,让第三方容器去创建ObjectB,并且让ObjectB进行转动。
(3)对比:图一控制权在自身,图二控制权在IOC容器,降低了多个对象之间的耦合性。这就是控制反转的思想。
1、控制反转(IOC):
Ioc—Inversion of Control,即“控制反转”。控制反转是种设计思想,将你设计好的对象交给容器控制,而不是在你对象内部直接控制。
控制什么?控制了外部资源获取,比如对象创建、文件读取等。
什么反转了?依赖对象的获取反转了。ObjectB依赖于ObjectA。之前是ObjectA想获取ObjectB由自身控制,现在ObjectA获取ObjectB由IOC容器控制。
2、依赖注入(DI):
DI—Dependency Injection,即“依赖注入”。组件之间依赖关系由容器在运行期决定,即由容器动态的将某个依赖关系注入到组件之中。 谁依赖谁?某个对象依赖于IOC容器 谁注入谁?IOC容器提供资源,将资源注入到某个需要的对象中。
3、控制反转和依赖注入的关系:
同一思想的不同说法。资源获取的主动索取变成被注入。
4、依赖注入的实现:
基于接口:定义接口,提供给IOC容器来传入自身所需要的对象
基于set方法:通过方法提供给IOC容器来传入自身所需要的对象
基于构造函数:通过构造提供给IOC容器来传入自身所需要的对象
基于注解:通过注解,生成方法,给IOC容器来传入自身所需要的对象
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0