gpt4 book ai didi

android - Dagger 2 中作用域的使用差异

转载 作者:搜寻专家 更新时间:2023-11-01 09:37:05 24 4
gpt4 key购买 nike

我使用 Dagger 2 在我的应用程序中执行依赖倒置规则。我只是在看 Clean Architecture example by Fernando Cejas我有一个问题 - 下面介绍的两种方法有什么区别:

如果我这样标记类:

@Singleton // or @PerActivity or @PerFragment, nevermind
public class UserDataStoreFactory {

private final Context context;
private final UserCache
}

或者如果我创建一个模块,在其中定义一个提供方法并将该模块添加到任何组件(PerActivity、PerFragment 等等,没关系)

@Module
public class SomeModule {
@Provides
@Singleton // or @PerActivity or @PerFragment, nevermind
UserDataStoreFactory providesUserDataStoreFactory (Context context, UserCache userCache) {
return new UserDataStoreFactory(context, userCache)
}
}

最佳答案

这两种方法是相同的:都将允许您的 UserDataStoreFactory 在单例(或@PerActivity/@PerFragment/nevermind)范围内的整个应用程序中注入(inject)。

前一种方法,用作用域标记类,只有在类有 @Inject-annotated 构造函数时才有效。第二种方法不需要构造函数注释,但也需要额外的样板代码,这些代码在构造函数参数更改时可能会发生更改。这使得第一种方法对 UserDataStoreFactory 上的依赖项更改更具弹性,即使它们在您的图中都实现了相同的最终结果;但是,第一种方法可能只有在类是您可以更改的代码,或者是为作用域依赖注入(inject)而构建的代码时才有可能。

关于android - Dagger 2 中作用域的使用差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42233721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com