前面介绍了Dagger框架的简单使用。
可以通过Dagger创建一个Car:
Car car = DaggerCarComponent.create().car();
当我们试图获取两次car时:
CarComponent carComponent = DaggerCarComponent.create();
Car car1 = carComponent.car();
Car car2 = carComponent.car();
System.out.println(car1 == car2);
输出:
false
两次获得的car不是同一个对象。如果希望car只实例一次,我们需要对项目进行一些简单的改造:
针对 @Component 接口和 Car 使用Singleton注解。
@Singleton
@Component
public interface CarComponent {
Car car();
}
@Singleton
public class Car {
private Engine engine;
@Inject
public Car(Engine engine) {
this.engine = engine;
}
}
build一下,再次进行测试:
CarComponent carComponent = DaggerCarComponent.create();
Car car1 = carComponent.car();
Car car2 = carComponent.car();
System.out.println(car1 == car2);
输出:
true