Sobes.tech
Назад к вопросам
Junior — Middle
67

Какова роль ViewModelFactory и в каких случаях её использование оправдано?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

ViewModelFactory в Android используется для создания экземпляров ViewModel с параметрами конструктора. По умолчанию ViewModelProvider создаёт ViewModel через конструктор без параметров, но если ViewModel требует передачи зависимостей (например, репозиториев), нужна фабрика.

Роль и случаи использования:

  • Позволяет инжектировать зависимости в ViewModel.
  • Обеспечивает правильное создание ViewModel с учётом жизненного цикла.
  • Упрощает тестирование, позволяя подставлять мок-объекты.

Пример использования:

class MyViewModel(private val repo: Repository) : ViewModel() { /*...*/ }

class MyViewModelFactory(private val repo: Repository) : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(MyViewModel::class.java)) {
            return MyViewModel(repo) as T
        }
        throw IllegalArgumentException("Unknown ViewModel class")
    }
}

// В Activity или Fragment
val factory = MyViewModelFactory(repository)
val viewModel = ViewModelProvider(this, factory).get(MyViewModel::class.java)

Использование оправдано, когда ViewModel требует параметры в конструкторе.