Назад к вопросам
Junior — Middle
62
Каким образом можно внедрить зависимости через конструктор в ViewModel?
Ответ от нейросети
sobes.tech AI
Внедрение зависимостей через конструктор в ViewModel в Android обычно реализуется с помощью фабрики ViewModelProvider.Factory. Это позволяет передавать необходимые зависимости (например, репозитории) в конструктор ViewModel.
Пример:
class MyViewModel(private val repository: MyRepository) : ViewModel() {
// логика ViewModel
}
class MyViewModelFactory(private val repository: MyRepository) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(MyViewModel::class.java)) {
@Suppress("UNCHECKED_CAST")
return MyViewModel(repository) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
}
// Использование в Activity или Fragment
val factory = MyViewModelFactory(myRepository)
val viewModel = ViewModelProvider(this, factory).get(MyViewModel::class.java)
Такой подход позволяет легко тестировать ViewModel, передавая в неё мок-объекты, и поддерживает принцип инверсии зависимостей.