Sobes.tech
Middle

MVC ve MVP mimari desenleri arasındaki farklar nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

MVC (Model-View-Controller) ve MVP (Model-View-Presenter) iki popüler mimari desen olup, uygulamayı bileşenlere ayırmak ve bakım ile test edilebilirliği artırmak amacıyla kullanılır. Temel farklar, sorumluluk dağılımı ve bileşenler arasındaki etkileşimde yatar.

MVC (Model-View-Controller):

  • Model: Uygulamanın verilerini ve iş mantığını içerir. View veya Controller hakkında bilgi sahibi değildir.
  • View: Model'den verileri gösterir ve kullanıcı eylemlerini işler (örneğin, düğme tıklamaları). View doğrudan Model ile bağlantılıdır (verileri ondan çeker).
  • Controller: Model ve View arasında aracılık yapar. View'den kullanıcı eylemlerini alır, Model'i günceller ve gösterilecek View'i seçer.

MVC'de, View ve Controller sıkı bağlıdır. View doğrudan Model'e erişebilir, bu da View'un test edilmesini zorlaştırabilir. Controller, Model'i günceller ve Model, değişiklikleri View'e bildirir (genellikle KVO veya NotificationCenter aracılığıyla).

MVP (Model-View-Presenter):

  • Model: MVC'deki Model'e benzer, veri ve iş mantığını içerir.
  • View: Verileri gösterir ve tüm kullanıcı eylemlerini Presenter'a yönlendirir. View pasif bir varlıktır, iş mantığı içermez ve doğrudan Model ile etkileşime girmez.
  • Presenter: Kontrolcü gibi hareket eder, ancak farklı sorumluluklara sahiptir. View'den kullanıcı eylemlerini alır, Model ile etkileşime girer ve ardından View'i günceller, metodlarını çağırır. Presenter, View ve Model'i tanır.

MVP'de, View tamamen Model'den ayrıdır. Presenter, View ve Model arasındaki mantığı yönetir. Presenter, verileri "iterek" View'i günceller. Bu, View'un daha "aptal" (dumb) olmasını sağlar ve Presenter'ın izole test edilmesini kolaylaştırır.

Karşılaştırmalı tablo:

Özellik MVC MVP
View ile Model arasındaki bağlantı View, Model'e doğrudan erişebilir View, Model'i bilmez
Temel bağlayıcı rolü Controller Presenter
View'in güncellenmesi Model, View'i bildirir (Pull) Presenter, View'i günceller (Push)
"Zeka" seviyesi View Görüntüleme mantığını içerebilir Pasif, minimum mantık içerir
Test edilme durumu View'un testi daha zor olabilir Presenter'ın testi daha basittir
Bağımlılıklar Controller, View ve Model'e bağlı Presenter, View ve Model'e bağlı

Basitleştirilmiş etkileşim örneği:

MVC:

  1. Kullanıcı View'de bir düğmeye tıklar.
  2. View, Controller'ı bilgilendirir.
  3. Controller, işlemi işler, gerekirse Model'i günceller.
  4. Model, veri değişikliklerini View'e bildirir.
  5. View, Model'den veri alarak arayüzünü günceller.

MVP:

  1. Kullanıcı View'de bir düğmeye tıklar.
  2. View, eylemi Presenter'a yönlendirir (örneğin, View protokolündeki bir yöntemi çağırır).
  3. Presenter, işlemi işler, Model ile etkileşime girer.
  4. Presenter, Model'den güncellenmiş verileri alır.
  5. Presenter, view.display(updatedData) gibi yöntemleri çağırarak View'i günceller. View sadece verileri gösterir.