Ответ
MVVM (Model-View-ViewModel) использует несколько паттернов проектирования:
- Observer – View подписывается на изменения ViewModel через LiveData/Flow.
- Data Binding – Связывает UI-элементы с данными ViewModel (опционально).
- Dependency Injection – ViewModel часто внедряется через DI (например, Dagger/Hilt).
- Facade – ViewModel скрывает сложность бизнес-логики от View.
Пример с LiveData:
class MyViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String> = _data // Наблюдаемый поток данных
fun fetchData() {
_data.value = "New Data"
}
}
// Во View (Activity/Fragment):
viewModel.data.observe(this) { newData ->
textView.text = newData // Автоматическое обновление UI
}