Android

MVC vs MVP vs MVVM Tasarım Modelleri

MVP’yi bilmeden kullanıyormuşum gibi görünüyor. Aslında, MVC kullandığımı sanıyordum. Android öğrenirken bu MVVM hakkında bilgi edindim. Mimariyi çok daha temiz yapan tek yönlü veri akışı nedeniyle MVVM’yi seviyorum.

Aşağıdaki şema, aralarında yan yana karşılaştırmalar verir.

Model-Görünüm-Kontrol (MVC)

  • Bağımlılık yönü: Görünüm -> Model, Denetleyici -> Model ve Görünüm
  • Görünüm, Model hakkında bilgi sahibidir (örn. bağlanma verileri), Kontrolör her şeyi bilir, Model hiçbir şey bilmez
  • Denetleyici, Görünüm’den UI olayını gözlemler, Model’e veri yazar ve Görünüm’e neyin güncelleneceğini söyler
  • Görünüm, verileri modelden ekrana getirir

Orada farklı MVC varyasyonları var. Bu yüzden burada paylaştığım şey, orijinal MVC tasarımından biraz ince ayar yaptığım anlayışıma dayanıyor.

Model-Görünüm-Sunucu (MVP)

  • Bağımlılık yönü: Sunucu -> Model ve Görünüm
  • Sunucu her şeyi bilir, Görünüm ve Model hiçbir şey bilmez
  • Sunucu, Görünüm’den UI olayını gözlemler, Model’e veri yazar, Model’den verileri okur ve görüntüleme için Görünüm’e veri sağlar

MVP, Görünümün Modele bağlı olmaması dışında MVC’ye benzer. Sunucu, verileri okumak/yazmak ve verileri Görünüme iletmekle ilgilenir.

Model-Görünüm-ViewModel (MVVM)

  • Bağımlılık yönü: Görünüm -> Modeli Görüntüle -> Model
  • View, View Model’i biliyor, View Model, Model’i biliyor, Model hiçbir şey bilmiyor
  • Bir UI olayı olduğunda, View Modeli UI olayı hakkında bilgilendirir.
  • Modeli Görüntüle bazı mantıkları gerçekleştirir ve Modele veri yazar
  • View Model, Modelden gelen veri değişikliklerini gözlemler ve kendi verilerini günceller.
  • Görünüm, Görünüm Modelinden veri değişikliklerini gözlemler. Herhangi bir değişiklik varsa, kullanıcı arayüzünü güncellemekten Görünüm sorumludur.

Aktivite/Fragmanın Görünüm’e taşındığını lütfen unutmayın. Ayrıca, bağımlılık ve veri akışı tek yönlüdür.

Özet

İşimde şahsen hibrit MVC ve MVP kullanımını gördüm. Mimariyi çok dağınık yapar. Gerçekten ikisinden birine bağlı kalmalıyız.

MVVM, tek yönlü veri ve bağımlılık akışı nedeniyle MVC/MVP’den daha iyidir. Bağımlılık bir yoldur, bu nedenle ihtiyacımız olduğunda onu ayırmak çok daha kolaydır. Ayrıca test etmek daha kolaydır.

Herşey benim projelerim(Android uygulaması için Kotlin’de yazılmıştır) MVVM’ye dayanmaktadır.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu