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
}