Sobes.tech
Junior — Middle

Jaké jsou hlavní rozdíly mezi vzory MVP a MVVM v kontextu architektury aplikací?

sobes.tech AI

Odpověď od AI

MVP (Model-View-Presenter) a MVVM (Model-View-ViewModel) jsou architektonické vzory, které pomáhají oddělit logiku aplikace a uživatelské rozhraní, ale dělají to různými způsoby.

  • MVP:

    • View — odpovídá za zobrazení a interakci s uživatelem, implementuje rozhraní.
    • Presenter — prostředník mezi View a Modelem, obsahuje logiku, aktualizuje View.
    • View přímo volá metody Presenter, a Presenter aktualizuje View přes rozhraní.
    • Připojení je obvykle obousměrné, Presenter zná View, View zná Presenter.
  • MVVM:

    • View — UI, je svázáno s ViewModel přes bindingy (například Data Binding v Androidu).
    • ViewModel — obsahuje logiku a stav, nezná přímo View.
    • ViewModel poskytuje data a příkazy, View se automaticky aktualizuje při změnách.
    • Připojení je jednostranné: ViewModel nezávisí na View, což usnadňuje testování.

V Androidu se MVVM často používá s LiveData a Data Binding, což snižuje množství kódu v Activity/Fragment. MVP vyžaduje více explicitního kódu pro aktualizaci UI.

Příklad MVVM s LiveData:

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

    fun loadData() {
        data.value = "Hello MVVM"
    }
}

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