Фарқиятҳои байни намунаҳои меъмории MVC ва MVP чистанд?
sobes.tech AI
Ҷавоб аз AI
MVC (Model-View-Controller) ва MVP (Model-View-Presenter) — ду маъруф архитектурии намунаҳо мебошанд, ки барои тақсим кардани барнома ба компонентҳо барои беҳтар кардани нигоҳдории ва тестгирӣ пешбинӣ шудаанд. Фарқиятҳои асосӣ дар тақсимоти масъулият ва ҳамкории байни компонентҳо мебошанд.
MVC (Model-View-Controller):
- Model: Маъзур маълумотҳои барнома ва мантиқи бизнесро дар бар мегирад. Дар бораи View ё Controller хабар надорад.
- View: Маълумотро аз Model намоиш медиҳад ва амалҳои корбарро коркард мекунад (масалан, пахш кардани тугмаҳо). View мустақиман бо Model алоқаманд аст (аз он маълумот мекашад).
- Controller: Вайсиятро байни Model ва View мебарад. Аз View амалҳоро мегирад, Model-ро навсозӣ мекунад ва View-ро барои намоиш интихоб мекунад.
Дар MVC, View ва Controller дар ҳамдигар сахт алоқаманданд. View метавонад мустақиман ба Model барои маълумот муроҷиат кунад, ки метавонад санҷиши View-ро душвор созад. Controller Model-ро навсозӣ мекунад ва Model маълумотҳоро ба View огоҳ мекунад (бештар тавассути KVO ё NotificationCenter).
MVP (Model-View-Presenter):
- Model: Монанд ба Model дар MVC, маълумот ва мантиқи бизнесро дар бар мегирад.
- View: Маълумотро намоиш медиҳад ва ҳамаи амалҳои корбарро ба Presenter мефиристад. View як воҳиди пассив аст, ки мантиқи бизнесро дар бар намегирад ва мустақиман бо Model ҳамкорӣ намекунад.
- Presenter: Вайсиятро ҳамчун контроллер мебарад, аммо бо масъулияти дигар. Аз View амалҳоро мегирад, бо Model ҳамкорӣ мекунад барои навсозии маълумот ва сипас View-ро навсозӣ мекунад, бо истифода аз методҳои он. Presenter дар бораи View ва Model маълумот дорад.
Дар MVP, View комилан аз Model ҷудо аст. Presenter ҳамчун миёнарав амал мекунад, мантиқи байни View ва Model-ро коркард мекунад. Presenter маълумотҳоро ба View "фишор" мекунад. Ин View-ро бештар "бебаҳо" мекунад ва тестгирии Presenter-ро осонтар мекунад.
Таблиғи муқоиса:
| Хусусият | MVC | MVP |
|---|---|---|
| Вайроншавии View бо Model | View метавонад ба Model муроҷиат кунад | View аз Model хабар надорад |
| Нақши асосӣ барои пайваст кардан | Controller | Presenter |
| Навсозии View | Model View-ро огоҳ мекунад (Pull) | Presenter View-ро навсозӣ мекунад (Push) |
| "Ақлнок" View | Мумкин аст логикаи намоишро дошта бошад | Пассивӣ, камтарин логика дорад |
| Тестгирӣ | Тест кардани View метавонад душвор бошад | Тест кардани Presenter осонтар мешавад |
| Вусъатҳо | Controller аз View ва Model вобаста аст | Presenter аз View ва Model вобаста аст |
Масалан, ҳамкории соддашуда:
MVC:
- Корбар тугма дар View-ро пахш мекунад.
- View Controller-ро огоҳ мекунад.
- Controller амалро коркард мекунад, шояд Model-ро навсозӣ мекунад.
- Model View-ро огоҳ мекунад дар бораи тағирот.
- View интерфейси худро навсозӣ мекунад, маълумотро аз Model мегирад.
MVP:
- Корбар тугма дар View-ро пахш мекунад.
- View амалро ба Presenter мефиристад (масалан, метод дар протоколи View-ро даъват мекунад).
- Presenter амалро коркард мекунад, бо Model ҳамкорӣ мекунад.
- Presenter маълумоти навро аз Model мегирад.
- Presenter View-ро навсозӣ мекунад, бо даъвати методҳои он (масалан,
view.display(updatedData)). View танҳо маълумотро намоиш медиҳад.