シングルトンを定義するには、Kotlin オブジェクト宣言を使用するか、通常の Kotlin クラスを作成し、dagger を使用して注入する必要がありますか? 私の意見では、最初のオプションの方が間違いなく簡単ですが、この状況で短剣を使用する理由があるかもしれませんが、私にはわかりません。
オプション 1 (通知objectキーワード):
object SomeUtil {
// object state (properties)
fun someFunction(number: Long) {
// ...
}
}
オプション 2 (通知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のようなライブラリはsをモックobjectすることもできます。それでも、オプション 2 が望ましいと思いますか?