Junior — Middle
Jaký je rozdíl v způsobech komunikace mezi View a jejími modely: ViewModel a View, stejně jako Presenter a View?
sobes.tech AI
Odpověď od AI
V architektuře Android se vztah mezi View a jejími modely (ViewModel a Presenter) liší podle způsobu interakce a odpovědnosti:
-
View a ViewModel (MVVM)
- ViewModel neobsahuje odkazy na View, což zajišťuje slabé propojení.
- ViewModel poskytuje data prostřednictvím pozorovatelných objektů (například LiveData), na které se View přihlašuje.
- Změny v datech se automaticky odrážejí ve View prostřednictvím pozorovatelů.
- ViewModel nezná konkrétní implementaci View, což usnadňuje testování.
-
Presenter a View (MVP)
- Presenter má odkaz na View přes rozhraní.
- View volá metody Presenter a Presenter přímo aktualizuje View přes rozhraní.
- Vztah je pevnější a Presenter řídí logiku zobrazení.
Pří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 způsobem je MVVM zaměřen na reaktivní aktualizace přes pozorovatele, zatímco MVP na přímé řízení View přes rozhraní Presenter.