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.