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:
- İstifadəçi View-də düyməyə basır.
- View Controller-ə məlumat verir.
- Controller fəaliyyəti emal edir, bəlkə də Model-i yeniləyir.
- Model məlumatların dəyişdiyini View-ə bildirir.
- View məlumatları Model-dən alaraq interfeysini yeniləyir.
MVP:
- İstifadəçi View-də düyməyə basır.
- View fəaliyyəti Presenter-ə yönəldir (məsələn, View protokolunda metod çağırır).
- Presenter fəaliyyəti emal edir, Model ilə qarşılıqlı əlaqə qurur.
- Presenter Model-dən yenilənmiş məlumatları alır.
- 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.