Modell-nézet-prezenter
A modell-nézet-prezenter (angolul: Modell-View-Presenter, röviden: MVP) egy szoftvertervezési minta, amely az MVC-mintából alakult ki. Az MVP-modell főleg olyan alkalmazásokban nyújt jelentős előnyöket – hasonlóan az MVC-hez –, ahol komplex adathalmazokon kell műveleteket végezni, és ezek eredményeit a felhasználó elé tárni. A mintát felhasználó alkalmazások a minta sajátosságaiból eredően könnyedén alávethetőek ún. egységteszteknek (angolul unit test).
Szerkezete
[szerkesztés]Az MVP modell három rétegre osztja az alkalmazást. Mindhárom rétegnek jól körülírható feladatai vannak, és csak a szomszéd réteggel kommunikálhatnak. Ez nagyfokú rugalmasságot ad: a két szélső komponens egymás tudta nélkül bármikor lecserélhető. Például egy új adatbázismotor támogatásához nem kell módosítani a felhasználói felületet, illetve egy új "publikus interfész" (pl. web-szerviz) bevezetése sem igényli a modell módosítását.
- A modell az alkalmazás által megjelenített és feldolgozott adatok reprezentációja.
- A nézet megjeleníti a modellben tárolt adatokat a felhasználó számára, illetve a felhasználói interakció során bekövetkező eseményeket továbbítja a prezenter felé.
- A prezenter összegyűjti az adatokat, illetve formázza a nézet számára feldolgozható módon.
Passzív nézet
[szerkesztés]Passzívnak akkor nevezzük a View réteget, ha a megjelenítésen kívül nem végez semmilyen feladatot. Ebben az esetben garantáltan minden logika a Presenter rétegen van. A megközelítés hátránya, hogy sok olyan kód is a prezenter rétegre kerülhet, amelyet valójában nem ott kellene implementálni.
Felügyelő nézet
[szerkesztés]Akkor beszélünk Supervisor View-ről, ha a View nem csak passzívan megjeleníti az adatokat, hanem egyes vezérlési feladatokat saját maga is ellát. Bár első ránézésre a modell felrúgásának tűnhet a felügyelő nézet használata, valójában ezzel a megközelítéssel elkerülhetővé válik, hogy a prezenter a nézet mikromenedzsmentjével foglalkozzon.
Fordítás
[szerkesztés]- Ez a szócikk részben vagy egészben a Modell-View-Presenter című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.