Этот вопрос проверяет умение организовать чистую передачу данных по архитектуре MVVM/MVP.
В MVVM обычно используют LiveData или StateFlow в ViewModel: бизнес-логика обновляет их, а UI-слой в Activity/Fragment подписывается и автоматически получает обновления. Это даёт lifecycle-aware реактивность и разделение ответственности. В MVP Presenter передаёт изменения через интерфейс View.
MVVM + LiveData
val data: LiveData<List<Item>> в ViewModel, UI вызывает viewModel.data.observe(...).
MVVM + StateFlow
val state: StateFlow<UiState> и в UI lifecycleScope.launch { viewModel.state.collect { … } }.
MVP
Presenter вызывает view.showData(data) через интерфейс.
Преимущества реактивности:
Авто-отписка при уничтожении UI.
Отображение только актуальных данных.
Вывод:
Выбирайте LiveData/Flow для новых проектов на Kotlin.