创建实现2个接口的单例对象

时间:2020-03-14 10:51:58

标签: koin

single<ObserveLifeCycleState> { Communicator( domain = get(), repositoryMessanger = get() ) }

single<NewMessageListener> { Communicator( domain = get(), repositoryMessanger = get() ) }

如您所见,我正在实例化相同的2个对象,因为它实现了两个接口。但这会创建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
    }
相关问题