MVP model arhitectural
În acest articol, vom afla ceva despre model MVP, acesta este moștenit de la model MVC. Dar, cu siguranță, are unele modificări în comparație cu modelul MVC. Deci, vom înțelege cum să-l folosim, cum să facem diferența între modelul MVC și modelul MVP.
Să începem.
- problemă de analiză
- definiția modelului MVP
- când se utilizează
- beneficii& dezavantaj
- înfășurarea
problemă de analiză
precauția care s-a născut modelul MVP este aceeași ca și în cazul modelului MVC. Dar MVP este folosit pentru a preveni unele dezavantaje ale modelului MVC, cum ar fi:
- În modelul MVC, vizualizarea și modelul pot fi interacționate reciproc. Deci, de obicei, validăm datele din Model sau folosim logica datelor în vedere. Deci, face dificilă testarea automată a unității.
- este relevant pentru securitate.
definiția modelului MVVM
conform wikipedia.com, avem definiția modelului MVP:
MVP pattern is a derivation of the Model-View-Controller (MVC) architectural pattern, and is used mostly for building user interfaces.In MVP, the presenter assumes the functionality of the middle-man.In MVP, all presetation logic is pushed to the presenter.
și modelul MVP își are originea la începutul anilor 1990 la Taligent, un joint-venture al Apple, IBM și Hewlett-Packard.
mai jos este conținutul fiecărei părți din modelul MVP.
-
modelul are entități și servicii.
entități este folosit pentru a conține date care este maparea cu tabelul în baza de date pentru utilizarea altor motive.
servicii, poate fi folosit model DAO, sau model depozit, sunt strat subțire între stratul de aplicație și stratul de acces la date. Ei gestionează în mod normal, operations CRUD cu baza de date în local sau la distanță.
-
vizualizarea are responsabilități care interacționează cu utilizatorii.
nu conține nicio logică. Acesta va direcționa intrările și comenzile utilizatorului (evenimente) către prezentator.
vizualizarea are de obicei o referire la prezentatorul său.
-
prezentatorul este partea intermediară dintre vizualizare și Model. Acesta va juca același rol ca controler în model MVC.
toate logica de afaceri, logica de date, validarea de intrare, primește evenimente din Vizualizări, convertește datele de la vedere la Model sau de la Model la vedere este implementat în prezentator.
în comparație cu vizualizarea și controlerul din modelul MVC, vizualizarea și prezentatorul prezente în modelul MVP sunt complet decuplate unele de altele și comunică prin intermediul unei interfețe. (Prezentatorul interacționează cu vizualizările prin interfața de vizualizare, înseamnă că prezentatorul poate efectua toate sarcinile de prezentare și navigare fără nicio dependență de tehnologia UI reală utilizată)
și avem diagrama de secvență a modelului MVP:
când să folosiți
-
ecranul nostru are
bi-directional-flow
, înseamnă că interacțiunile utilizatorilor trebuie să solicite ceva din modelul nostru, iar rezultatul acestei solicitări va afecta vizualizarea. -
vizualizarea afectată de actualizările din Model este foarte limitată.
-
model MVP nu este utilizat într-un caz în care UI este actualizat fără interacțiuni utilizator, cum ar fi actualizarea UI atunci când un eveniment se întâmplă în modelul, această abordare este mai aproape de MVVM mai mult decât MVP.
beneficii& dezavantaj
- beneficii
-
vizualizarea nu interacționează direct cu modelul. Aceasta izolează implementarea vizualizării mai bine decât în MVC și permite testarea automată a unității mai ușoară a prezentatorului și a modelului.
-
capacitatea de a schimba UI de la Web la fereastră sau mobil este foarte ușor.
-
costuri reduse de întreținere
-
- dezavantaje
-
prezentatorul tinde să se extindă la o clasă uriașă atotștiutoare dacă nu suntem suficient de atenți și nu ne încălcăm codul conform principiului responsabilității unice.
-
creșterea complexității.
-
curba de învățare suplimentară.
-
unele modele care sunt relevante pentru modelul MVP
-
Application Controller
– dacă prezentatorii interacționează cu un controler de aplicație, prezentatorii nu au nevoie de fluxul paginii și logica de navigare pe ecran. Acest lucru facilitează actualizarea fluxului de pagini. -
Observer pattern
înfășurarea
-
utilizatorul final interacționează numai cu vizualizarea.
-
O vizualizare este mapată numai la un prezentator.
-
vezi referințe prezentator, dar nu are nici o referire la modelul. Și prezentatorul este, de asemenea, conștient de punctul de vedere asociat cu acesta.
-
modelul facilitează comunicarea bidirecțională între vizualizare și prezentator.
-
există alte două implementări ale modelului MVP, cum ar fi vizualizarea pasivă și controlerul de supraveghere.
-
vizualizarea pasivă este complet controlată de prezentator. Prin implementarea MVP vedere pasivă, este mult mai ușor să se ocupe de concurență și multithreading.
-
în supravegherea prezentatorului, vizualizarea interacționează direct cu modelul pentru a efectua orice legare simplă a datelor care poate fi definită declarativ, fără prezentator. Prezentatorul actualizează Modelul. Se schimbă numai starea de vedere atunci când este necesară logica UI complex, care nu poate fi specificat declarativ.
-
comparați cu alte variante ale MVP, cum ar fi vizualizarea pasivă, Modelul prezentatorului de Supraveghere face Codul mai simplu o prioritate mai mare decât testabilitatea completă. Modelul prezentatorului de supraveghere necesită mai puțin cod decât alte modele MVP, deoarece utilizează legarea datelor. Codul este mai ușor de întreținut, deoarece modificările UI simple nu necesită modificări de cod în prezentator pentru a actualiza vizualizarea.
-
Refer:
https://www.linkedin.com/pulse/mvp-architecture-pattern-small-article-khaled-kassem/
Book Architectural Patterns_ Uncover essential patterns in the most indispensable realm of enterprise architecture
https://www.oreilly.com/library/view/architectural-patterns/9781787287495/38abcb95-0392-4127-a3fa-b80ac2807aa9.xhtml
The other idea about Presenter in MVP pattern and Controller in MVC pattern
http://hannesdorfmann.com/mosby/mvp/
Choose MVP pattern over MVC pattern
Why Do You Need to Choose MVP Over MVC Android Architectural Pattern?
Examples for MVP pattern
http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html
https://www.raywenderlich.com/7026-getting-started-with-mvp-model-view-presenter-on-android
https://www.linkedin.com/pulse/when-use-mvc-mvp-mvvm-nothing-ahmed-adel/
A Model View Presenter (MVP) implementation with ASP.NET
A brief introduction to a cleaner Android architecture: The MVP pattern
https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff649571(v=pandp.10)
Leave a Reply