持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情
上一篇文章及之前文章我们介绍了依赖注入的三种实现方式。这篇文章我们围绕这三种注入方式做一个对比
三种依赖注入方式的比较
构造方法注入
构造方法其实就是用来“构造对象”的方法。将对象构造完成之后,这个对象就进入了“可使用”的状态。
这种方式的确定是当某个对象所依赖的对象比较多的时候,其构造方法中的参数会很多,在维护和使用上是比较麻烦的。
在Java 中,构造函数是不可以继承的,同时也不能为其中的参数设置默认值。
有时候有一些参数是非必须依赖的,所以可能会引入多个构造方法,这样一来,如果再加入一些必须的参数之后,维护起来很麻烦。
setter 方法注入
相比于通过构造方法进行依赖注入,我们会发现这种注入方式其实自由度是很高的。同时setter 方法可以被继承,也允许设置默认值。在IDE 中,往往有快捷键进行生成。
但是其在对象构造完成之后无法立刻进入到可使用状态,还需要其他角色调用setter 方法才可以。
接口注入
接口注入的方式是使用很少的一种方式,它只是一种“可以达到目的”的注入方法,而不是被提倡使用的方法。
如果使用接口注入方式进行依赖注入,被注入对象是需要强制实现一个对于业务开发没有多大意义的接口,这样反而会带来一些繁琐。而构造方法注入和setter 方法注入就没有这个问题。
所以,使用接口注入的方式进行依赖注入是不建议使用的。其实在我们日常开发中也是几乎很难见到这种使用方式的。