在使用Kodein时,如果我有两个模块,而module B
需要使用module A
中的一个实例,那么将module A
导入module B
是最佳做法,还是有更好的方法?
例如,我有一个networkingModule
:
val networkingModule = Kodein.Module("networking") {
bind<Retrofit>() with singleton {
Retrofit.Builder()
.baseUrl("https://api.example.com/")
.build()
}
}
subscribersModule
需要来自networkingModule
:的改装实例
val subscribersModule = Kodein.Module("subscribersModule") {
import(networkingModule)
bind<SubscribersService>() with singleton {
instance<Retrofit>().create(SubscribersService::class.java)
}
}
在subscribersModule
中添加import(networkingModule)
是最好的方法吗?
最后,如果您的模块在一个项目中使用,则不必强制使它们相互依赖。
相反,您可以将它们导入到全局容器中,如下所示:
val applicationContainer = Kodein {
import(subscribersModule)
import(networkingModule)
// ...
}
Kotein DI将为您解决依赖关系。