single<ObserveLifeCycleState> { Communicator( domain = get(), repositoryMessanger = get() ) }
single<NewMessageListener> { Communicator( domain = get(), repositoryMessanger = get() ) }
如您所见,我正在实例化相同的2个对象,因为它实现了两个接口。但这会创建2个不同的对象。如何仅执行一次初始化?
答案 0 :(得分:1)
这是将单个实例绑定到多个接口的惯用方式。
single {
Communicator(get(), get())
}
single<NewMessageListener> {
get<Communicator>()
}
single<ObserveLifeCycleState> {
get<Communicator>()
}
答案 1 :(得分:-1)
single {
Communicator(
domain = get(),
repositoryMessanger = get()
)
}
single {
val communicator: Communicator = get()
communicator as NewMessageListener
}