Back to questions
СБЕР
Junior — Middle
66
Какова роль ViewModelFactory и в каких случаях её использование оправдано?
Companies where asked
Answer from AI
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 требует параметры в конструкторе.