如何在具有 2 种不同实现的匕首模块中提供单例
How to provide a singleton in a dagger module with 2 different implementations
想象一把匕首module
,它有以下两个方法来提供一个对象。
@Provides @Singleton Cache<Settings> providesSettingsCache( Database db )
{
return new StateCache( db, BuildConfig.VERSION_CODE );
}
@Provides @Singleton Cache<User> providesUserCache( Database db )
{
return new StateCache( db, BuildConfig.VERSION_CODE );
}
在我的示例中,StateCache
实现了 Cache<User>
和 Cache<Settings>
接口。现在,我希望这两种方法都指向同一个实例,而不是 returning 一个 StateCache
的实例。
如何在 Dagger 中实现这一点? module
是否持有 StateCache
的一个实例的引用,并且有两种方法 return 那?
让 Dagger 管理 StateCache
实例。
@Provides @Singleton StateCache provideStateCache(Database db) {
return new StateCache(db, BuildConfig.VERSION_CODE);
}
@Provides @Singleton Cache<Settings> provideSettingsCache(StateCache cache) {
return cache;
}
@Provides @Singleton Cache<User> provideSettingsCache(StateCache cache) {
return cache;
}
想象一把匕首module
,它有以下两个方法来提供一个对象。
@Provides @Singleton Cache<Settings> providesSettingsCache( Database db )
{
return new StateCache( db, BuildConfig.VERSION_CODE );
}
@Provides @Singleton Cache<User> providesUserCache( Database db )
{
return new StateCache( db, BuildConfig.VERSION_CODE );
}
在我的示例中,StateCache
实现了 Cache<User>
和 Cache<Settings>
接口。现在,我希望这两种方法都指向同一个实例,而不是 returning 一个 StateCache
的实例。
如何在 Dagger 中实现这一点? module
是否持有 StateCache
的一个实例的引用,并且有两种方法 return 那?
让 Dagger 管理 StateCache
实例。
@Provides @Singleton StateCache provideStateCache(Database db) {
return new StateCache(db, BuildConfig.VERSION_CODE);
}
@Provides @Singleton Cache<Settings> provideSettingsCache(StateCache cache) {
return cache;
}
@Provides @Singleton Cache<User> provideSettingsCache(StateCache cache) {
return cache;
}