Articles

MVP építészeti minta

ebben a cikkben találunk valamit az MVP mintáról, az MVC mintától örökölt. De határozottan, van néhány változás, ha összehasonlítjuk MVC minta. Így, meg fogjuk érteni, hogyan kell használni, hogyan lehet megkülönböztetni MVC minta MVP minta.

kezdjük.

  • elemzési probléma
  • az MVP minta meghatározása
  • mikor kell használni
  • előnyök& hátrány

elemzési probléma

az MVP mintában született óvatosság ugyanaz, mint az MVC minta. De MVP használják, hogy megakadályozzák néhány hátránya MVC minta, mint például:

  • az MVC minta, nézet, modell lehet kölcsönhatásba egymással. Tehát általában a modellből származó adatokat érvényesítjük,vagy adat logikát használunk. Tehát megnehezíti az automatizált egység tesztelését.
  • a biztonság szempontjából releváns.

MVVM minta meghatározása

szerint wikipedia.com az MVP minta definíciója:

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.

és MVP minta az 1990-es évek elején keletkezett a Taligentnél, az Apple, az IBM és a Hewlett-Packard közös vállalatánál.

Az alábbiakban az MVP mintázat egyes részeinek tartalma látható.

  • a modell entitásokkal és szolgáltatásokkal rendelkezik.

    Az entitások olyan adatokat tartalmaznak, amelyek más okok miatt leképezik a táblázatot az adatbázisban.

    szolgáltatások, lehet használni DAO minta, vagy adattár minta, vékony réteg között alkalmazás réteg adathozzáférési réteg. Ezek általában kezelni CRUD műveletek adatbázis helyi vagy távoli.

  • a nézetnek olyan felelőssége van, amely kölcsönhatásba lép a felhasználókkal.

    nem tartalmaz semmilyen logikát. A felhasználó bemeneteit és parancsait (eseményeit) a Műsorvezetőhöz irányítja.

    a nézet általában utal a műsorvezetőre.

  • Az előadó a Nézet és a modell közötti közbenső rész. Ez fog játszani ugyanazt a szerepet, mint a vezérlő MVC minta.

    az összes üzleti logika, adatlogika, a bemenet érvényesítése, események fogadása nézetekből, adatok konvertálása nézetről modellre vagy modellről nézetre a bemutatóban történik.

    az MVC mintában lévő nézethez és vezérlőhöz képest az MVP mintában jelen lévő nézet és műsorvezető teljesen függetlenül egymástól, és interfészen keresztül kommunikálnak egymással. (A Műsorvezető befolyásolja a Kilátást keresztül Megtekintése felület, ez azt jelenti, hogy a Műsorvezető végre minden bemutatása navigációs feladatok nélkül függőség a tényleges UI technológiát használják)

    Illetve van szekvencia diagram MVP minta:

Mikor kell használni

  • A képernyő bi-directional-flow, ez azt jelenti, hogy a felhasználói interakciók kell kérni valamit a Modell, az eredmény a kérelem hatással lesz a Kilátás.

  • a modellfrissítések által érintett nézet nagyon korlátozott.

  • MVP minta nem használható abban az esetben, ha a felhasználói felület frissítése felhasználói interakciók nélkül történik, mint például a felhasználói felület frissítése amikor egy esemény történik a modellben, ez a megközelítés közelebb áll az MVVM-hez, mint az MVP-hez.

előnyök & hátrány

  1. előnyök
    • a nézet nem lép közvetlenül kapcsolatba a modellel. Ez elkülöníti a Nézet implementációt, mint az MVC-ben, és lehetővé teszi a Presenter és a modell egyszerűbb automatizált egységtesztelését.

    • A felhasználói felület webről ablakra vagy mobilra történő megváltoztatásának képessége nagyon egyszerű.

    • alacsony fenntartási költség

  2. hátrányai
    • A műsorvezető hajlamos egy hatalmas, mindent tudó osztályra terjeszkedni, ha nem vagyunk elég óvatosak, és nem törjük meg kódunkat az egyetlen felelősség elve szerint.

    • fokozott komplexitás.

    • Extra tanulási görbe.

Egy kis mintákat, amelyek relevánsak MVP minta

  • Application Controller – Ha előadók lépnek kapcsolatba egy alkalmazás adatkezelő, az előadók nem kell az oldalon áramlását, valamint a képernyő navigációs logika. Ez megkönnyíti az oldalfolyam frissítését.

  • Observer pattern

  • a végfelhasználó csak a megtekintéssel lép kapcsolatba.

  • egy nézet csak egy előadóra van leképezve.

  • referenciák megtekintése műsorvezető, de nincs hivatkozás modell. A műsorvezető tisztában van a vele kapcsolatos nézetekkel is.

  • a minta kétirányú kommunikációt biztosít a Nézet és a műsorvezető között.

  • az MVP mintázat két másik implementációja létezik, mint például a passzív nézet és a felügyelő vezérlő.

    • a passzív nézet teljesen vezérli Presenter. Az MVP Passive View megvalósításával sokkal könnyebb kezelni a konkurenciát és a többszálú megjelenítést.

    • Az előadó felügyeletében a nézet közvetlenül kölcsönhatásba lép a modellel, hogy elvégezzen minden olyan egyszerű adatkötést, amely deklaratív módon meghatározható, a bemutató nélkül. A bemutató frissíti a modellt. Csak akkor változtatja meg a Nézet állapotát, ha összetett UI logikára van szükség, amelyet nem lehet deklaratív módon megadni.

    • összehasonlítása más változatai MVP, mint például a passzív nézet, a felügyelő Presenter minta teszi egyszerűbb kódot magasabb prioritású, mint a teljes tesztelhetőség. A felügyeletet ellátó Presenter Minta kevesebb kódot igényel, mint más MVP minták, mert adatkötést használ. A kódot könnyebb fenntartani, mivel az egyszerű felhasználói felület-módosítások nem igényelnek kódváltozást az előadóban a Nézet frissítéséhez.

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)