У меня есть приложение для Android, написанное на Kotlin, которое использует MVVM с шаблоном Repository.Я использую Dagger 2 для внедрения зависимостей в репозиторий, таких как службы SharedPreferences или Retrofit2.
При поиске в Интернете я всегда вижу, что в репозитории есть конструктор Injected, но я никогда не вижу эти введенные поля.Конечно, я мог бы переместить их всех в конструктор, но кажется неправильным иметь конструктор со значениями +5.Я понимаю, что внедренный конструктор позволяет мне внедрить сам репозиторий куда-нибудь.
Что я хочу знать, так это то, что внедрение таких полей является хорошей практикой.Я обычно вижу эти введенные поля только во фрагментах и действиях.У меня было что-то похожее в моей ViewModel, но я должен был удалить его, чтобы иметь возможность его модульного тестирования.
Мой код:
open class Repository @Inject constructor(private val context: Context, var sharedPreferences: SharedPreferences) {
@Inject
internal lateinit var appAuthManager: AppAuthManager
@Inject
internal lateinit var siriusApiService: SiriusApiService
@Inject
internal lateinit var siriusAuthApiService: SiriusAuthApiService
@Inject
internal lateinit var credential: GoogleAccountCredential
...
}