目录
依赖注入概念
依赖
在讲解依赖注入概念之前,我们可以先了解下依赖的概念,依赖就是当ClassA需要调用ClassB的任意方法时候,我们可以认为ClassA是ClassB的依赖,反之也可以理解为ClassA依赖于ClassB。
public class ClassA {
ClassB classB = new ClassB();
double taxes(){
return classB.salary() * 0.45d;
}
}
class ClassB {
int salary() {
return 999999;
}
}
在这个例子中,ClassA通过调用ClassB返回的年收入来进行计算税费。
上面的方式会增加调用者与被调用者之间的耦合,不利于后期的升级与维护。
依赖注入(Dependency Injection)
依赖注入是一种用来实现控制反转的软件设计模式,依赖注入将调用者和被调用者分离开来,调用者不再实例化被调用者,从而达到解耦的目的。
依赖注入有三种类型的类:
1.客户类:客户类依赖于服务类,相当于例子中的ClassA
2.服务类:服务类提供服务给客户类,相当于例子中的ClassB
3.Injector 类:Injector会实例化服务类,将服务类注入给客户类进行使用
Guice框架的简单使用
环境配置
Gradle
implementation 'com.google.inject:guice:5.1.0'
Maven
<!-- https://mvnrepository.com/artifact/com.google.inject/guice -->
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>5.1.0</version>
</dependency>
步骤1:创建Interface
public interface SpellChecker {
void checkSpelling();
}
步骤2:实现Interface<