Sobes.tech
Junior — Middle

Оё метавонед фарқият байни намунаҳои меъмории MVVM, MVI ва MVP-ро шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

MVVM (Model-View-ViewModel), MVI (Model-View-Intent) ва MVP (Model-View-Presenter) — архитектурни шаблони, ки кӯмак мерасонанд, ки кодро дар барномаҳо ташкил кунанд, масъулиятро байни компонентҳо тақсим кунанд.

  • MVP: Нақш нишон медиҳад, ки барои намоиш ва интиқоли амалҳои корбар ба Presenter масъул аст. Presenter логикаро дар бар мегирад ва View-ро навсозӣ мекунад. Model маълумот ва логикаи бизнесро намояндагӣ мекунад. View ва Presenter мустақиман пайваст шудаанд.

  • MVVM: View бо ViewModel тавассути пайвастагии дуҷонибаи маълумот (data binding) пайваст мешавад. ViewModel логика ва ҳолатро дар бар мегирад, дар ҳоле ки Model маълумотҳоро дорад. ViewModel мустақиман View-ро намедонад, ки имкон медиҳад, ки озмоиш кардан осонтар шавад.

  • MVI: асос ёфтааст ба ҷараёни маълумоти як самтӣ. View Intent (ниятҳои корбар) мебарорад, ки дар Model коркард мешаванд, ҳолатро навсозӣ мекунанд ва пас дар View нишон дода мешаванд. Ин соддасозии идоракунии ҳолат ва пешгӯии ҷараёни маълумотро таъмин мекунад.

Масалан дар Android MVVM бо LiveData:

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

    fun loadData() {
        // боркунии маълумот
        data.value = "Hello MVVM"
    }
}

// Дар Activity ё Fragment
viewModel.data.observe(this) { value ->
    textView.text = value
}