Articles

MVP architectural pattern

i den här artikeln hittar vi något om MVP pattern, det ärvs från MVC pattern. Men definitivt, det har vissa förändringar jämfört med MVC mönster. Så vi kommer att förstå hur man använder det, hur man skiljer mellan MVC-mönster och MVP-mönster.

Låt oss komma igång.

  • analysproblem
  • Definition av MVP-mönster
  • när du ska använda
  • fördelar & nackdel
  • förpackning upp

analysproblem

varningen som föddes MVP-mönstret är samma som med MVC mönster. Men MVP används för att förhindra vissa nackdelar med MVC mönster såsom:

  • i MVC mönster, Visa och modell kan interagera varandra. Så Vi validerar vanligtvis data från modell eller använder datalogik i sikte. Så det gör automatiserad enhetstestning svår.
  • Det är relevant för säkerheten.

Definition av MVVM mönster

enligt wikipedia.com, vi har definitionen av MVP-mönster:

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.

och MVP-mönster har sitt ursprung i början av 1990-talet på Taligent, ett joint venture av Apple, IBM och Hewlett-Packard.

nedan är innehållet i varje del i MVP mönster.

  • modellen har enheter och tjänster.

    Entities används för att innehålla data som kartlägger med tabell i databasen för att använda några andra skäl.

    tjänster, kan användas DAO mönster, eller Förvarsmönster, är tunt lager mellan Applikationsskikt och Dataåtkomstlager. De hanterar normalt CRUD operationer med databas i lokal eller fjärr.

  • Vyn har ansvar som interagerar med användare.

    det innehåller ingen logik. Det kommer att dirigera användaringångar och kommandon (händelser) till presentatören.

    Vyn har vanligtvis en hänvisning till presentatören.

  • presentatören är mellandelen mellan vy och modell. Det kommer att spela samma roll som Controller i MVC mönster.

    All affärslogik, datalogik, validera inmatning, tar emot händelser från vyer, konverterar data från vy till modell eller från modell till vy implementeras i presentatör.

    jämfört med vyn och styrenheten i MVC-mönstret är vyn och presentatören som finns i MVP-mönstret helt frikopplade från varandra och de kommunicerar med hjälp av ett gränssnitt. (Presentatören interagerar med vyerna via Visningsgränssnittet, det betyder att presentatören kan utföra alla presentations-och navigeringsuppgifter utan något beroende av den faktiska UI-tekniken som används)

    och vi har sekvensdiagram över MVP-mönster:

när du ska använda

  • vår skärm har bi-directional-flow, betyder det att användarinteraktioner måste begära något från vår modell, och resultatet av denna begäran kommer att påverka vyn.

  • vyn som påverkas av uppdateringarna från modellen är mycket begränsad.

  • MVP-mönster används inte i ett fall när användargränssnittet uppdateras utan användarinteraktioner, som att uppdatera användargränssnittet när en händelse händer i modellen är detta tillvägagångssätt närmare MVVM mer än MVP.

fördelar& nackdel

  1. fördelar
    • vyn interagerar inte direkt med modellen. Detta isolerar visningsimplementeringen bättre än i MVC och möjliggör enklare automatiserad enhetstestning av presentatören och modellen.

    • möjligheten att ändra användargränssnittet från Webb till fönster eller mobil är väldigt enkelt.

    • låg underhållskostnad

  2. nackdelar
    • presentatören tenderar att expandera till en enorm allvetande klass om vi inte är tillräckligt försiktiga och inte bryter vår kod enligt principen om enskilt ansvar.

    • ökad komplexitet.

    • extra inlärningskurva.

vissa mönster som är relevanta för MVP – mönster

  • Application Controller – om presentatörer interagerar med en applikationskontroller behöver presentatörerna inte sidflöde och skärmnavigeringslogik. Detta gör det lättare att uppdatera sidflödet.

  • Observer pattern

inslagning

  • slutanvändaren interagerar endast med vyn.

  • en vy mappas endast till en presentatör.

  • visa referenser presentatör men det har ingen hänvisning till Modell. Och presentatören är också medveten om den uppfattning som hör samman med den.

  • mönstret innebär tvåvägskommunikation mellan vyn och presentatören.

  • det finns två andra implementeringar av MVP-mönster som passiv vy och övervakande styrenhet.

    • den passiva vyn styrs helt av presentatören. Genom att implementera MVP passiv vy är det mycket lättare att hantera samtidighet och multitrådning.

    • i övervakande presentatör interagerar vyn direkt med modellen för att utföra alla enkla databindningar som kan deklarativt definieras utan presentatören. Presentatören uppdaterar modellen. Det ändrar bara vyens tillstånd när komplex UI-logik som inte kan specificeras deklarativt krävs.

    • jämfört med andra varianter av MVP, såsom passiv vy, Gör det övervakande Presentatörsmönstret enklare kod en högre prioritet än fullständig testbarhet. Det övervakande Presentatörsmönstret kräver mindre kod än andra MVP-mönster eftersom det använder databindning. Koden är lättare att underhålla eftersom enkla UI-ändringar inte kräver kodändringar i presentatören för att uppdatera vyn.

se:

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)