Articles

MVP architectural pattern

In dit artikel zullen we iets vinden over MVP pattern, het is overgenomen van MVC pattern. Maar zeker, het heeft een aantal veranderingen in vergelijking met MVC patroon. Dus, we zullen begrijpen hoe het te gebruiken, hoe onderscheid te maken tussen MVC patroon en MVP patroon.

laten we beginnen.

  • Analyseprobleem
  • definitie van MVP-patroon
  • wanneer
  • voordelen & nadeel
  • Wrapping
  • Analyseprobleem

    De voorzichtigheid die werd geboren MVP-patroon is hetzelfde als met MVC patroon. Maar MVP wordt gebruikt om een aantal nadelen van MVC patroon te voorkomen, zoals:

    • In MVC patroon, uitzicht en Model kunnen interageren met elkaar. Dus, we meestal valideren gegevens uit het Model of gebruik maken van data logica in View. Dus, het maakt geautomatiseerde unit testen moeilijk.
    • het is relevant voor de zekerheid.

    definitie van MVVM-patroon

    volgens wikipedia.com, we hebben de definitie van MVP patroon:

    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.

    en MVP patroon ontstond in de vroege jaren 1990 bij Taligent, een joint venture van Apple, IBM en Hewlett-Packard.

    hieronder is de inhoud van elk deel in MVP-patroon.

    • het Model heeft entiteiten en diensten.

      entiteiten worden gebruikt om gegevens te bevatten die worden toegewezen aan een tabel in de database om andere redenen.

      diensten, kunnen worden gebruikt DAO patroon, of Repository patroon, zijn dunne laag tussen applicatielaag en Data Access Layer. Ze beheren normaal CRUD operations met database in lokale of remote.

    • De weergave heeft verantwoordelijkheden die interageren met gebruikers.

      Het bevat geen logica. Het zal gebruikersinvoer en commando ‘ s (gebeurtenissen) routeren naar de presentator.

      De weergave heeft meestal een verwijzing naar de presentator.

    • de presentator is het tussenstuk tussen Beeld en Model. Het zal dezelfde rol spelen als Controller in MVC patroon.

      alle business logic, data logic, validate input, receives events from Views, converts data from View to Model or from Model to View wordt geïmplementeerd in Presenter.

      vergeleken met de weergave en de Controller in het MVC-patroon, worden de weergave en de presentator in het MVP-patroon volledig van elkaar ontkoppeld en communiceren ze door middel van een interface. (De Presentator interactie met de Standpunten via Weergave-interface, betekent dit dat de Presentator kan het uitvoeren van alle presentatie en navigatie taken zonder enige afhankelijkheid van de werkelijke UI-technologie wordt gebruikt)

      En we hebben sequence diagram van het MVP pattern:

    gebruik

    • Ons-scherm bi-directional-flow, betekent dat dat de interacties van de gebruiker moeten vragen iets van ons Model, en het resultaat van dit verzoek zal van invloed zijn op de Weergave.

    • De weergave die wordt beïnvloed door de updates van het Model is zeer beperkt.

    • MVP patroon wordt niet gebruikt in een geval waarin de UI wordt bijgewerkt zonder interactie van de gebruiker, zoals het bijwerken van de UI wanneer een gebeurtenis plaatsvindt in het Model, deze aanpak is dichter bij MVVM meer dan MVP.

    voordelen & nadeel

    1. voordelen
      • De weergave heeft geen directe interactie met het Model. Dit isoleert de View implementatie bettern dan in MVC en maakt het gemakkelijker geautomatiseerde unit testen van de presentator en het Model.

      • de mogelijkheid om de gebruikersinterface te veranderen van Web naar Window of Mobile is zeer eenvoudig.

      • lage onderhoudskosten

    2. nadelen
      • de presentator heeft de neiging om uit te breiden naar een enorme alwetende klasse als we niet voorzichtig genoeg zijn en onze code niet breken volgens het principe van één verantwoordelijkheid.

      • verhoogde complexiteit.

      • Extra leercurve.

    sommige patronen die relevant zijn voor MVP patroon

    • Application Controller – als presentatoren interageren met een applicatiecontroller, hebben de presentatoren geen paginastroom en schermnavigatielogica nodig. Dit maakt het makkelijker om de pagina stroom bij te werken.

    • Observer pattern

    Wrapping

    • de eindgebruiker interageert alleen met de weergave.

    • Een weergave wordt slechts aan één presentator toegewezen.

    • bekijk referenties presentator maar het heeft geen verwijzing naar Model. En de presentator is zich ook bewust van de visie die ermee gepaard gaat.

    • De pattern faciliteiten tweeweg communicatie tussen de weergave en de presentator.

    • er zijn twee andere implementaties van MVP-patroon, zoals Passive View en Supervising Controller.

      • De passieve weergave wordt volledig bestuurd door de presentator. Door MVP Passive View te implementeren, is het veel gemakkelijker om concurrency en multithreading te verwerken.

      • bij het toezicht houden op Presenter, interageert de weergave direct met het Model om een eenvoudige databand uit te voeren die declaratief kan worden gedefinieerd, zonder de Presenter. De presentator werkt het Model bij. Het verandert alleen de status van de weergave wanneer complexe UI-logica die niet declaratief kan worden gespecificeerd vereist is.

      • vergelijk met andere variaties van MVP, zoals Passive View, het Supervising Presenter patroon maakt eenvoudiger code een hogere prioriteit dan volledige testbaarheid. Het Supervising Presenter patroon vereist minder code dan andere MVP patronen omdat het data binding gebruikt. De code is gemakkelijker te onderhouden omdat eenvoudige UI-wijzigingen geen code-wijzigingen in de presentator vereisen om de weergave bij te werken.

    refereer:

    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)