MVC, MVP, MVVM, MVVM-C va VIPER arxitektura farqlari.1. MVC (Model-View-Controller).Bu eng qadimgi va eng ko'p qabul qilingan dizayn naqshlaridan (
pattern) biridir. Uning asosiy maqsadi dastur ma'lumotlarini (data), UI-ni va boshqaruv mantig'ini bir-biriga bog'langan uchta komponentga ajratishdir.
Bu yerda
Model data va logikani boshqaradi,
View ma'lumotni ko'rsatadi,
Controller Model va View-ni bog'laydi va user kiritgan ma'lumotlarni boshqaradi.
2. MVP (Model-View-Presenter).MVC-ning yaxshilangan versiyasi bo'lib, u hodisaga asoslangan muhitdagi kamchiliklarini Model-dan View-ni ajratish yo'li bilan bartaraf etishga qaratilgan va Presenter o'rtada vositachi sifatida ishlaydi.
Bu yerda
Model ma'lumotlarni boshqaradi,
View ma'lumotlarni ko'rsatadi va user buyruqlarini
Presenter-ga yuboradi, Presenter esa Model-dan ma'lumotlarni oladi va uni View-ga taqdim etadi.
3. MVI (Model-View-Intent).MVI - reaktiv arxitektura bo'lib, bir yo'nalishli ma'lumotlar oqimini o'z ichiga oladi, bu holatda UI barqaror bo'lishini ta'minlaydi.
Bu yerda
Model holatni (
state),
View state-ni aks ettiradi, Intent esa state-ni o'zgartiruvchi user harakatlarini ifodalaydi.
4. MVVM (Model-View-ViewModel).MVVM, UI komponentlarini bilmagan holda ViewModel view logikasini handle qilish bilan ajratilgan yondashuvni targ'ib qilib, UI yaratishdagi murakkabliklarni hal qilish uchun paydo bo'ldi.
Bu yerda
Model ma'lumotlarni boshqaradi va ko'rsatadi,
ViewModel esa UI bilan bog'liq ma'lumotlarni saqlaydi va o'z ichiga oladi.
5. MVVM-C (MVVM va Coordinator).MVVM-C bu MVVM-ga asoslanib, navigatsiyani boshqarish uchun
Coordinator-ni tanishtiradi, uni
View va
ViewModel-dan ajratadi.
Murakkab navigatsiyani, view mantig'idan ajratish kerak bo'lgan kattaroq ilovalar, ayniqsa iOS uchun.
6. VIPER (View-Interactor-Presenter-Entity-Router).VIPER - toza arxitektura (
clean architecture)-ga o'xshash modulli arxitektura. Bu dastur mantig'ini alohida komponentlarga bo'lish orqali testlashga va Yagona javobgarlik (
Single Responsibility) printsipiga urg'u beradi.
Bu yerda
View,
Presenter yuborgan narsalarni ko'rsatadi,
Interactor har bir foydalanish holati uchun biznes mantig'ini o'z ichiga oladi,
Presenter kontentni tayyorlash uchun view logikasini o'z ichiga oladi,
Entity asosiy model obyektini va
Router navigatsiya mantiqini o'z ichiga oladi.
Manba :
Linkedin