Sobes.tech
Junior — Middle

Můžete vysvětlit rozdíly mezi architektonickými vzory MVVM, MVI a MVP?

sobes.tech AI

Odpověď od AI

MVVM (Model-View-ViewModel), MVI (Model-View-Intent) a MVP (Model-View-Presenter) jsou architektonické vzory, které pomáhají organizovat kód v aplikacích tím, že rozdělují odpovědnost mezi komponenty.

  • MVP: Zobrazení je odpovědné za zobrazování a přenos akcí uživatele k Presenterovi. Presenter obsahuje logiku a aktualizuje zobrazení. Model představuje data a obchodní logiku. Zobrazení a Presenter jsou přímo propojeny.

  • MVVM: Zobrazení se připojuje k ViewModel přes obousměrné datové vazby (data binding). ViewModel obsahuje logiku a stav, zatímco Model data. ViewModel nezná přímo zobrazení, což usnadňuje testování.

  • MVI: je založen na jednosměrném toku dat. Zobrazení generuje Intent (záměry uživatele), které jsou zpracovávány v Modelu, aktualizují stav, který je následně zobrazen ve zobrazení. To zjednodušuje správu stavu a činí tok dat předvídatelným.

Příklad v Android MVVM s LiveData:

class MyViewModel : ViewModel() {
    val data = MutableLiveData<String>()

    fun loadData() {
        // načítání dat
        data.value = "Hello MVVM"
    }
}

// V Activity nebo Fragment
viewModel.data.observe(this) { value ->
    textView.text = value
}