Sobes.tech
Junior — Middle

MVVM, MVI ve MVP mimari desenleri arasındaki farkları açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

MVVM (Model-View-ViewModel), MVI (Model-View-Intent) ve MVP (Model-View-Presenter) mimarî desenleridir ve uygulamalarda kodu düzenlemeye, bileşenler arasındaki sorumluluğu ayırmaya yardımcı olurlar.

  • MVP: Görünüm, kullanıcı eylemlerini gösterir ve Presenter'a iletir. Presenter, mantığı içerir ve Görünüm'ü günceller. Model, veriler ve iş mantığını temsil eder. Görünüm ve Presenter doğrudan bağlıdır.

  • MVVM: Görünüm, iki yönlü veri bağlama (data binding) aracılığıyla ViewModel ile bağlantı kurar. ViewModel, mantık ve durumu içerir, Model ise verileri. ViewModel, Görünüm'ü doğrudan bilmez, bu da testi kolaylaştırır.

  • MVI: tek yönlü veri akışına dayanır. Görünüm, Kullanıcı Niyetleri (Intent) üretir, bunlar Model'da işlenir ve durumu günceller, ardından Görünüm'de gösterilir. Bu, durum yönetimini basitleştirir ve veri akışını öngörülebilir kılar.

Android MVVM örneği ile LiveData:

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

    fun loadData() {
        // veri yükleme
        data.value = "Hello MVVM"
    }
}

// Activity veya Fragment'ta
viewModel.data.observe(this) { value ->
    textView.text = value
}