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