持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情
上一篇文章我们介绍的是通过setter 方法进行依赖注入。这篇文章我们介绍最后一种依赖注入的方式:通过接口进行依赖注入。
通过接口进行依赖注入
对于前两种依赖注入的方式其实在我们看来,即使是新手,也是一目了然。但是通过接口进行依赖注入就没有那么简单明了了。
通过接口进行依赖注入,如果被注入的对象想要通过IOC 容器为其注入其所依赖的对象,那么就必须要实现某个接口才行。这个接口存在的意义就是通过提供一个方法,来为实现了这个接口的类的对象来进行依赖注入。
举例来说:
interface TestInterface {
void injectMethod(Dep1 dep1);
}
class Test implements TestInterface {
private Dep1 dep1;
@Override
public void injectMethod(Dep1 dep1) {
this.dep1 = dep1;
}
// 其他逻辑
}
其实我们可以发现,TestInterface 接口中的方法的参数,就是实现了这个接口对应的类的对象所需要依赖的对象的类型。这样,IOC Service Provider 就可以通过这个接口的方法,将依赖对象注入到需要被注入的对象中去。
其实如果使用这种注入方式,我们可以发现,某个类实现的接口和接口中的方法名称都是不重要的,重要的是方法中的参数类型,这个参数类型必须是“被注入对象”所依赖的对象的相同类型才可以。
总结
至此三种依赖注入方式就已经讲解完了。相比于通过构造方法进行依赖注入和通过setter 方法进行依赖注入,使用接口进行依赖注入的方式就比较繁琐了。即:如果需要注入依赖对象,那么就必须实现其他的接口。
其实这种方式使用的很少,这里仅仅是为了介绍而介绍,也就是说,通过这种方式,也可以达到“依赖注入”的目的。