依赖注入 – Dagger 2中的组件中getter方法的目的是什么?
发布时间:2020-05-23 11:25:03 所属栏目:程序设计 来源:互联网
导读:我试图理解Dagger 2中的组件.这是一个例子: @Component(modules = { MyModule.class })public interface MyComponent { void inject(InjectionSite injectionSite); Foo foo(); Bar bar(); } 我理解void inject()方
|
我试图理解Dagger 2中的组件.这是一个例子: @Component(modules = { MyModule.class })
public interface MyComponent {
void inject(InjectionSite injectionSite);
Foo foo();
Bar bar();
}
我理解void inject()方法的作用.但我不明白其他Foo foo()getter方法的作用.这些其他方法的目的是什么? Dagger是一种连接对象及其依赖关系图的方法.作为直接调用构造函数的替代方法,您可以通过从Dagger请求实例来获取实例,或者通过提供您希望使用Dagger创建的实例注入的对象来获取实例.让我们做一个咖啡店,这取决于提供商< Coffee>和CashRegister.假设您在模块中连接了这些(可能是LightRoastCoffee和DefaultCashRegister实现). public class CoffeeShop {
private final Provider<Coffee> coffeeProvider;
private final CashRegister register;
@Inject
public CoffeeShop(Provider<Coffee> coffeeProvider,CashRegister register) {
this.coffeeProvider = coffeeProvider;
this.register = register;
}
public void serve(Person person) {
cashRegister.takeMoneyFrom(person);
person.accept(coffeeProvider.get());
}
}
现在你需要得到一个CoffeeShop的实例,但它只有一个带有依赖关系的双参数构造函数.那你怎么做的?简单:您告诉Dagger在它生成的Component实例上创建一个工厂方法. @Component(modules = {/* ... * |
