作者:这辈子没有你 | 来源:互联网 | 2022-10-23 04:39
要定义单例,应该使用kotlin对象声明还是使用普通的kotlin类并使用匕首注入它?我认为第一种选择肯定更容易,但是在这种情况下我可能不知道使用匕首的原因。
选项1(notice object
关键字):
object SomeUtil {
// object state (properties)
fun someFunction(number: Long) {
// ...
}
}
选项2(notice class
关键字):
class SomeUtil {
// object state (properties)
fun someFunction(number: Long) {
// ...
}
}
@Module
class AppModule {
@Provides
@Singleton
internal fun provideTheUtil() = SomeUtil()
}
class MainActivity : BaseActivity() {
@Inject internal lateinit var util: SomeUtil
}
更新2019-07-03
@Blackbelt在评论中说,为了可测试性,我们应该选择选项2。但是,像图书馆MockK可以嘲笑object
小号了。那么您是否仍然认为选项2是首选?