Junior — Middle
Aký je rozdiel v spôsoboch komunikácie medzi View a jej modelmi: ViewModel a View, ako aj Presenter a View?
sobes.tech AI
Odpoveď od AI
V architektúre Android sa vzťah medzi View a jej modelmi (ViewModel a Presenter) líši podľa spôsobu interakcie a zodpovednosti:
-
View a ViewModel (MVVM)
- ViewModel neobsahuje odkazy na View, čo zabezpečuje slabé prepojenie.
- ViewModel poskytuje údaje prostredníctvom pozorovateľných objektov (napríklad LiveData), na ktoré sa View prihlasuje.
- Zmeny v údajoch sa automaticky odrážajú vo View prostredníctvom pozorovateľov.
- ViewModel nepozná konkrétnu implementáciu View, čo uľahčuje testovanie.
-
Presenter a View (MVP)
- Presenter má odkaz na View cez rozhranie.
- View volá metódy Presenter-a a ten priamo aktualizuje View cez rozhranie.
- Vzťah je pevnejší a Presenter riadi logiku zobrazenia.
Príklad:
MVVM:
viewModel.data.observe(this) { data ->
view.update(data)
}
MVP:
interface View {
fun showData(data: String)
}
class Presenter(val view: View) {
fun loadData() {
val data = "..."
view.showData(data)
}
}
Týmto spôsobom je MVVM zameraný na reaktívne aktualizácie cez pozorovateľov, zatiaľ čo MVP na priame riadenie View cez rozhranie Presenter.