依赖注入
来源:互联网 发布:burpee 知乎 编辑:程序博客网 时间:2024/04/28 11:12
已经一直在使用spring的框架,但实际上对依赖注入的概念有些模糊,今天把依赖注入这个概念稍作一下梳理。
首先是依赖,在代码中,我们可以把依赖直观的理解为调用(包括变量与函数),这里是广义的调用。举个例子,我们有一个Computer类,有一个Ielectric接口,电脑需要电的提供:
public Class Computer{ public void turnOn(){ Ielectric ielectric = new ???; ielectric.provide();}
因此,从“
Ielectric ielectric = new ???;”我们看到Computer依赖于Ielectric,但是后面“???”处我们会很纠结,到底是哪一种实现,是交流电?还是直流电?还是高压电?因为接口的实现太多,我们为了满足不同的情况,将必须写上很多份代码,而这些代码的功能基本上是一样的!这个我们复用和维护带来了巨大的不便,因此,我们就要想办法重构代码,使之摆脱接口实现不确定的问题。
public class Computer { private ielectric; public Computer(Ielectric ielectric) { this.ielectric = ielectric; } public void turnOn() { this.ielectirc.provide(); }}重构后我们可以看出来,我们利用了构造函数,将ielectric以参数的形式传了进来,这就是将所依赖的类注入了进来,即依赖注入,该处是为构造函数注入。
对比上下两段代码,不难发现,前者是Computer主动去寻求Ielectric依赖,它依赖于Ielectric的实现,而后者Computer不再依赖于Ielectric的实现,任你是哪种电流,只要你实现了provide函数,都可以在我内部成功通过,实际上变成了所依赖的Ielectric寻找需要它的地方主动注入进来,这就是依赖的方向反转了,也就是我们所熟知的控制反转。
需要注意的是,依赖注入不是反射、IoC框架等等中的特有内容,而实际上是我们重构代码的一种思想,这点大家不能混淆。
0 0
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 依赖注入
- 端口被占用的解决办法
- bzoj1041[HAOI2008]圆上的整点
- C语言中#define的用法(转)
- php学习
- R语言柱状图排序和x轴上的标签倾斜
- 依赖注入
- Application.mk 向源代码传递宏定义
- JSF标签学习总结上
- k8s 集群搭建 kubernetes v1.5
- 大臣的旅费 (求树的直径,2个dfs)
- zed board 启动linux-qspi启动、sd卡启动
- linux用用户管理和文件权限及练习
- intent.setFlags方法中的参数值含义
- 八大排序算法