Articles

MVP-Architekturmuster

In diesem Artikel werden wir etwas über das MVP-Muster herausfinden, es wird vom MVC-Muster geerbt. Aber auf jeden Fall hat es einige Änderungen im Vergleich zu MVC-Muster. Wir werden also verstehen, wie man es benutzt, wie man zwischen MVC-Muster und MVP-Muster unterscheidet.

Los geht’s.

  • Analyseproblem
  • Definition des MVP-Musters
  • Wann zu verwenden
  • Vorteile & Nachteil
  • Einwickeln

Analyseproblem

Die Vorsicht, die MVP-Muster geboren wurde, ist die gleiche wie bei MVC pattern. MVP wird jedoch verwendet, um einige Nachteile des MVC-Musters zu vermeiden, z. B .:

  • In MVC pattern können View und Model miteinander interagieren. Daher validieren wir normalerweise Daten aus dem Modell oder verwenden Datenlogik in View. So macht es automatisierte Unit-Tests schwierig.
  • Es ist relevant für die Sicherheit.

Definition des MVVM-Musters

Gemäß wikipedia.com , wir haben die Definition von MVP-Muster:

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.

Und MVP-Muster entstand in den frühen 1990er Jahren bei Taligent, einem Joint Venture von Apple, IBM und Hewlett-Packard.

Unten ist der Inhalt jedes Teils im MVP-Muster.

  • Das Modell hat Entitäten und Dienste.

    Entitäten werden verwendet, um Daten zu enthalten, die aus anderen Gründen einer Tabelle in der Datenbank zugeordnet sind.

    Dienste, kann DAO-Muster verwendet werden, oder Repository-Muster, sind dünne Schicht zwischen Anwendungsschicht und Datenzugriffsschicht. Sie verwalten normalerweise CRUD-Operationen mit der Datenbank lokal oder remote.

  • Die Ansicht hat Verantwortlichkeiten, die mit Benutzern interagieren.

    Es enthält keine Logik. Es leitet Benutzereingaben und Befehle (Ereignisse) an den Präsentator weiter.

    Die Ansicht hat normalerweise einen Verweis auf ihren Präsentator.

  • Der Presenter ist der Zwischenteil zwischen View und Model. Es wird die gleiche Rolle wie der Controller im MVC-Muster spielen.

    Alle Geschäftslogik, Datenlogik, validieren Eingabe, empfängt Ereignisse aus Ansichten, konvertiert Daten von Ansicht zu Modell oder von Modell zu Ansicht ist in Presenter implementiert.

    Im Vergleich zu View und Controller im MVC-Muster sind View und Presenter im MVP-Muster vollständig voneinander entkoppelt und kommunizieren über eine Schnittstelle. Dies bedeutet, dass der Moderator alle Präsentations- und Navigationsaufgaben ausführen kann, ohne von der tatsächlich verwendeten UI-Technologie abhängig zu sein.)

    Und wir haben ein Sequenzdiagramm des MVP-Musters:

Wann zu verwenden

  • Unser Bildschirm hat bi-directional-flow, dies bedeutet, dass Benutzerinteraktionen etwas von unserem Modell anfordern müssen, und das Ergebnis dieser Anforderung wirkt sich auf die Ansicht aus.

  • Die Ansicht, die von den Aktualisierungen des Modells betroffen ist, ist sehr begrenzt.

  • Das MVP-Muster wird nicht verwendet, wenn die Benutzeroberfläche ohne Benutzerinteraktionen aktualisiert wird, z. B. wenn die Benutzeroberfläche aktualisiert wird, wenn ein Ereignis im Modell auftritt.

Vorteile & Nachteil

  1. Vorteile
    • Die Ansicht interagiert nicht direkt mit dem Modell. Dies isoliert die View-Implementierung besser als in MVC und ermöglicht ein einfacheres automatisiertes Unit-Testing von Presenter und Modell.

    • Die Möglichkeit, die Benutzeroberfläche von Web zu Window oder Mobile zu ändern, ist sehr einfach.

    • Niedrige Wartungskosten

  2. Nachteile
    • Der Moderator neigt dazu, sich zu einer riesigen allwissenden Klasse zu entwickeln, wenn wir nicht vorsichtig genug sind und unseren Code nicht nach dem Prinzip der Einzelverantwortung brechen.

    • Erhöhte Komplexität.

    • Zusätzliche Lernkurve.

Einige Muster, die für das MVP-Muster relevant sind

  • Application Controller – Wenn Moderatoren mit einem Anwendungscontroller interagieren, benötigen die Moderatoren keine Seitenfluss- und Bildschirmnavigationslogik. Dies erleichtert die Aktualisierung des Seitenflusses.

  • Observer pattern

Einwickeln

  • Der Endbenutzer interagiert nur mit der Ansicht.

  • Eine Ansicht wird nur einem Presenter zugeordnet.

  • Referenzen anzeigen Presenter aber es hat keinen Bezug zum Modell. Und der Moderator ist sich auch der damit verbundenen Ansicht bewusst.

  • Das Muster ermöglicht die bidirektionale Kommunikation zwischen der Ansicht und dem Präsentator.

  • Es gibt zwei weitere Implementierungen von MVP pattern wie Passive View und Supervising Controller.

    • Die passive Ansicht wird vollständig vom Presenter gesteuert. Durch die Implementierung von MVP Passive View ist es viel einfacher, Parallelität und Multithreading zu handhaben.

    • In Supervising Presenter interagiert die Ansicht direkt mit dem Modell, um eine einfache Datenbindung durchzuführen, die deklarativ ohne den Presenter definiert werden kann. Der Moderator aktualisiert das Modell. Der Status der Ansicht wird nur geändert, wenn eine komplexe Benutzeroberflächenlogik erforderlich ist, die nicht deklarativ angegeben werden kann.

    • Im Vergleich zu anderen Variationen von MVP, wie der passiven Ansicht, macht das Supervising Presenter-Muster einfacheren Code zu einer höheren Priorität als die vollständige Testbarkeit. Das Supervising Presenter-Muster benötigt weniger Code als andere MVP-Muster, da es Datenbindung verwendet. Der Code ist einfacher zu pflegen, da für einfache Änderungen der Benutzeroberfläche keine Codeänderungen im Presenter erforderlich sind, um die Ansicht zu aktualisieren.

Beziehen:

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)