Sobes.tech
Junior — Middle

Meg tudná magyarázni az MVVM, MVI és MVP architektúrális minták közötti különbségeket?

sobes.tech MI

Válasz az MI-től

MVVM (Model-View-ViewModel), MVI (Model-View-Intent) és MVP (Model-View-Presenter) architekturális minták, amelyek segítenek a kód szervezésében az alkalmazásokban, azzal, hogy szétválasztják a felelősséget a komponensek között.

  • MVP: A nézet felelős a megjelenítésért és a felhasználói műveletek átadásáért a Presenter-nek. A Presenter tartalmazza a logikát és frissíti a nézetet. A Model az adatok és az üzleti logika. A nézet és a Presenter közvetlenül kapcsolódnak.

  • MVVM: A nézet kétirányú adatkapcsolaton (data binding) keresztül kapcsolódik a ViewModel-hez. A ViewModel tartalmazza a logikát és az állapotot, míg a Model az adatokat. A ViewModel nem ismeri közvetlenül a nézetet, ez megkönnyíti a tesztelést.

  • MVI: egyirányú adatfolyamra épül. A nézet generál Intenteket (felhasználói szándékokat), amelyeket a Model dolgoz fel, frissítve az állapotot, amit később a nézet jelenít meg. Ez leegyszerűsíti az állapotkezelést és előre jelezhetővé teszi az adatfolyamot.

Android MVVM példával LiveData:

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

    fun loadData() {
        // adatok betöltése
        data.value = "Hello MVVM"
    }
}

// Az Activity-ben vagy Fragmentben
viewModel.data.observe(this) { value ->
    textView.text = value
}