Sobes.tech
Junior — Middle

Mi a különbség a kommunikációs módszerekben a View és modelljei között: ViewModel és View, valamint Presenter és View?

sobes.tech MI

Válasz az MI-től

Az Android architektúrában a View és modelljei (ViewModel és Presenter) közötti kapcsolat különbözik az interakció módjától és felelősségétől:

  • View és ViewModel (MVVM)

    • A ViewModel nem tartalmaz hivatkozásokat a View-ra, ez gyenge kapcsolódást biztosít.
    • A ViewModel adatokhoz Observable objektumokon (pl. LiveData) keresztül fér hozzá, amelyekhez a View feliratkozik.
    • Az adatokban bekövetkező változások automatikusan tükröződnek a View-ban megfigyelők segítségével.
    • A ViewModel nem ismeri a View konkrét megvalósítását, ez megkönnyíti a tesztelést.
  • Presenter és View (MVP)

    • A Presenter interfészen keresztül tart hivatkozást a View-ra.
    • A View meghívja a Presenter metódusait, és a Presenter közvetlenül frissíti a View-t az interfészen keresztül.
    • A kapcsolat szigorúbb, és a Presenter kezeli a megjelenítési logikát.

Példa:

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)
    }
}

Így az MVVM a reaktív frissítésre fókuszál megfigyelők segítségével, míg az MVP a View közvetlen kezelésére a Presenter interfészén keresztül.