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.