加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

依赖注入 – 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 = {/* ... *

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读