Sobes.tech
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.