Sobes.tech
Назад к вопросам
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, передавая в неё мок-объекты, и поддерживает принцип инверсии зависимостей.