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

ViewModelFactory в Android используется для создания экземпляров ViewModel с параметрами конструктора.

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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 требует параметры в конструкторе.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку