Sobes.tech
Middle

MVC və MVP memarlıq nümunələri arasındakı fərqlər nələrdir?

sobes.tech Süni İntellekt

AI-dan cavab

MVC (Model-View-Controller) və MVP (Model-View-Presenter) — iki məşhur memarlıq nümunəsi, tətbiqi komponentlərə bölmək üçün nəzərdə tutulmuşdur ki, bu da dəstək və test imkanlarını yaxşılaşdırır. Əsas fərqlər məsuliyyət bölgüsü və komponentlər arasında qarşılıqlı əlaqədədir.

MVC (Model-View-Controller):

  • Model: Tətbiqin məlumatlarını və biznes məntiqini saxlayır. View və ya Controller haqqında məlumatı yoxdur.
  • View: Model-dən məlumatları göstərir və istifadəçi fəaliyyətlərini (məsələn, düymələrə basma) emal edir. View birbaşa Model ilə əlaqəlidir (məlumatları ondan çəkir).
  • Controller: Model və View arasında vasitəçi rolunu oynayır. View-dən istifadəçi fəaliyyətlərini alır, Model-i yeniləyir və göstəriləcək View-i seçir.

MVC-də View və Controller sıx əlaqəlidir. View birbaşa Model-dən məlumat ala bilər, bu da View-in testini çətinləşdirə bilər. Controller Model-i yeniləyir və Model isə dəyişikliklər barədə View-ə məlumat verir (tez-tez KVO və ya NotificationCenter vasitəsilə).

MVP (Model-View-Presenter):

  • Model: MVC-dəki Model-ə bənzər, məlumatlar və biznes məntiqini saxlayır.
  • View: Məlumatları göstərir və bütün istifadəçi fəaliyyətlərini Presenter-ə yönəldir. View passiv varlıqdır, biznes məntiqini içermir və birbaşa Model ilə qarşılıqlı əlaqədə deyil.
  • Presenter: Nəzarətçi rolunu oynayır, lakin başqa məsuliyyətlərlə. View-dən istifadəçi fəaliyyətlərini alır, Model ilə qarşılıqlı əlaqə qurur və sonra View-i yeniləyir, onun metodlarını çağırır. Presenter View və Model haqqında məlumatlıdır.

MVP-də View tamamilə Model-dən ayrıdır. Presenter vasitəçi kimi çıxış edir, View və Model arasında məntiqi işləyir. Presenter View-ə məlumatları "itələyir". Bu, View-i daha "axmaq" edir və Presenter-in müstəqil test edilməsini asanlaşdırır.

Müqayisəli cədvəl:

Xüsusiyyət MVC MVP
View və Model əlaqəsi View Model-ə müraciət edə bilər View Model-i tanımır
Əsas əlaqələndirici rol Controller Presenter
View-in yenilənməsi Model View-ə məlumat verir (Pull) Presenter View-i yeniləyir (Push)
"Ağıllı" View Göstərmə məntiqini içərə bilər Passiv, minimum məntiqə malik
Test etmək View-in test edilməsi daha çətin ola bilər Presenter-in test edilməsi daha sadə olur
Asılılıqlar Controller View və Model-ə bağlıdır Presenter View və Model-ə bağlıdır

Sadələşdirilmiş qarşılıqlı əlaqə nümunəsi:

MVC:

  1. İstifadəçi View-də düyməyə basır.
  2. View Controller-ə məlumat verir.
  3. Controller fəaliyyəti emal edir, bəlkə də Model-i yeniləyir.
  4. Model məlumatların dəyişdiyini View-ə bildirir.
  5. View məlumatları Model-dən alaraq interfeysini yeniləyir.

MVP:

  1. İstifadəçi View-də düyməyə basır.
  2. View fəaliyyəti Presenter-ə yönəldir (məsələn, View protokolunda metod çağırır).
  3. Presenter fəaliyyəti emal edir, Model ilə qarşılıqlı əlaqə qurur.
  4. Presenter Model-dən yenilənmiş məlumatları alır.
  5. Presenter View-i yeniləyir, onun metodlarını çağırır (məsələn, view.display(updatedData)). View sadəcə məlumatları göstərir.