Sobes.tech
Junior — Middle

Milline on erinevus suhtlusviisides View ja selle mudelite vahel: ViewModel ja View ning Presenter ja View?

sobes.tech AI

Vastus AI-lt

Android arhitektuuris, View ja selle mudelid (ViewModel ja Presenter) erinevad omavahel suhtlemise viisi ja vastutuse poolest:

  • View ja ViewModel (MVVM)

    • ViewModel ei sisalda viiteid View-le, mis tagab nõrga sideme.
    • ViewModel pakub andmeid jälgitavate objektide (näiteks LiveData) kaudu, millele View registreerub.
    • Andmetes tehtud muudatused kajastuvad automaatselt View-s jälgijate kaudu.
    • ViewModel ei tea View konkreetset rakendust, mis lihtsustab testimist.
  • Presenter ja View (MVP)

    • Presenter omab viidet View-le liidese kaudu.
    • View kutsub Presenter-i meetodeid ning Presenter uuendab otse View-d liidese kaudu.
    • Suhe on rangem ning Presenter juhib kuvamise loogikat.

Näide:

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

Sellisel viisil keskendub MVVM reaktiivsele uuendamisele jälgijate kaudu, samas kui MVP keskendub otse View juhtimisele Presenter liidese kaudu.