Sobes.tech
Junior — Middle

Kas saaksite selgitada arhitektuurimustrite MVVM, MVI ja MVP erinevusi?

sobes.tech AI

Vastus AI-lt

MVVM (Model-View-ViewModel), MVI (Model-View-Intent) ja MVP (Model-View-Presenter) on arhitektuurimustrid, mis aitavad organiseerida koodi rakendustes, jagades vastutuse komponentide vahel.

  • MVP: Vaade vastutab kasutaja tegevuste kuvamise ja edastamise eest Presenterile. Presenter sisaldab loogikat ja uuendab vaadet. Mudel esindab andmeid ja äriloogikat. Vaade ja Presenter on otseselt seotud.

  • MVVM: Vaade ühendub ViewModel-iga kahepoolse andmebindingu kaudu. ViewModel sisaldab loogikat ja olekut, samas kui Mudel andmeid. ViewModel ei tunne otse vaadet, mis lihtsustab testimist.

  • MVI: põhineb ühesuunalisel andmevoolul. Vaade genereerib Intent'id (kasutaja kavatsused), mida töödeldakse Mudelis, uuendades olekut, mis seejärel kuvatakse vaates. See lihtsustab oleku haldamist ja muudab andmevoo ennustatavaks.

Näide Android MVVM-iga LiveData abil:

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

    fun loadData() {
        // andmete laadimine
        data.value = "Hello MVVM"
    }
}

// Activity või Fragment
viewModel.data.observe(this) { value ->
    textView.text = value
}