Model View Presenter

Model View Presenter

Model-View-Presenter (Abkürzung: MVP; wörtlich etwa ‚Modell-Ansicht-Präsentator‘) ist ein Entwurfsmuster in der Softwareentwicklung, das aus dem Model-View-Controller (Abkürzung: MVC) hervorgegangen ist. Es beschreibt einen neuartigen Ansatz, um das Modell (engl. Model) und die Ansicht (engl. View) komplett voneinander zu trennen und über einen Präsentator (engl. Presenter) zu verbinden. Dabei steht neben einer deutlich verbesserten Testbarkeit auch die strengere Trennung der einzelnen Komponenten im Gegensatz zu MVC im Vordergrund.

Erstmals eingesetzt und genannt wurde dieses Entwurfsmuster in den 1990er-Jahren von IBM und Taligent. Martin Fowler formulierte jedoch im Jahre 2004 Model-View-Presenter nach seinem Verständnis. Seine Definition ist heute ausschlaggebend.

Inhaltsverzeichnis

Definition

MVP basiert wie MVC auch auf drei Komponenten:

  • Modell – Model
  • Ansicht – View
  • Präsentator – Presenter

Model

Das Modell stellt die Logik der Ansicht dar. Dies kann auch die Geschäftslogik sein. Über das Modell muss jedoch alle Funktionalität erreichbar sein, um die Ansicht betreiben zu können. Die Steuerung des Modells erfolgt allein vom Präsentator. Das Modell selbst kennt weder die Ansicht noch den Präsentator.

View

Die Ansicht enthält keinerlei steuernde Logik und ist nur allein für die Darstellung und die Ein- und Ausgaben zuständig. Sie erhält weder Zugriff auf die Funktionalität des Präsentators noch auf das Modell. Sämtliche Steuerung der Ansicht erfolgt vom Präsentator.

Presenter

Der Präsentator ist das Bindeglied zwischen Modell und Ansicht. Er steuert die logischen Abläufe zwischen den beiden anderen Schichten und sorgt dafür, dass die Ansicht ihre Funktionalität erfüllen kann.

Damit MVP seine eigentlichen Vorteile gegenüber MVC entfalten kann, werden für Modell und Ansicht jeweils Schnittstellen (engl. Interfaces) verwendet. Die Schnittstellen definieren den genauen Aufbau beider Schichten und der Präsentator verknüpft lediglich die Schnittstellen miteinander. Dies gewährleistet die vollständige Austausch- und Wiederverwertbarkeit des Modells und der Ansicht. Resultierend aus der Austauschbarkeit der Ansicht lässt sich so vor allem ein Double (französisch für „Doppelgänger“) für die Ansicht verwenden, um die Funktionalität aus Perspektive der Oberfläche mit sogenannten Modultests (engl. unit tests) zu prüfen.

Im Jahre 2006 entschied sich Martin Fowler, aufgrund von Erkenntnissen bei der praktischen Anwendung von MVP, das ursprüngliche Entwurfsmuster in zwei differenzierte Muster aufzuteilen[1]: Supervising Controller und Passive View. Beide Muster unterscheiden sich hinsichtlich ihrer Testbarkeit und ihrer Handhabung.

Supervising Controller

Supervising Controller (wörtlich etwa ‚Überwachende „Steuerung“) ist ein Entwurfsmuster, das aus der ursprünglichen Variante von MVP hervorgegangen ist und von Martin Fowler definiert wurde. Hierbei übernimmt die Ansicht möglichst alle Aufgaben zur Datensynchronisation, während sich der Präsentator um alle anderen Abläufe zwischen Modell und Ansicht kümmert. Um die Synchronisation möglichst zu vereinfachen, kann auf Datenbindungen (engl. data bindings) zurückgegriffen werden. Dabei stellt das Modell Daten über Klassen bereit, die der Ansicht und dem Modell bekannt sind. Der Präsentator selbst sorgt nur noch für die Übertragung der Datenobjekte vom Modell zur Ansicht. Hierdurch entfällt weiterer Synchronisationsaufwand vom Präsentator, da sich die Ansicht selbstständig über die Datenobjekte synchronisiert. Das Modell kann seinerseits ebenfalls über die Datenobjekte auf innerhalb der Ansicht veränderte Daten zugreifen.

Passive View

Passive View (wörtlich etwa „Untätige Ansicht“) ist ein Entwurfsmuster, das aus der ursprünglichen Variante von MVP hervorgegangen ist und von Martin Fowler definiert wurde. Im Gegensatz zum Supervising Controller existiert keine Verbindung über ein Datenobjekt zwischen Modell und Ansicht. Dies trägt dazu bei, dass der Präsentator jegliche Datensynchronisation zwischen Modell und Ansicht selbst durchführen muss. Das Ergebnis dabei ist, dass die Ansicht nur einfachste Logik zur Anzeige beinhaltet und keine Logik zur Synchronisation von Daten. Dadurch wird der Quelltext der Ansicht äußerst vereinfacht, anders als dies beim Supervising Controller der Fall ist.

Unterschiede

In der Passive View verbessert sich die Testbarkeit gegenüber dem Supervising Controller, da nur noch einfachster Quellcode zur Ein- und Ausgabe in der Ansicht vorhanden ist. Wird die Ansicht bei Tests durch ein Double ersetzt, wird so auch der Quelltext zur Synchronisation im Präsentator geprüft. Es verbleibt in diesem Fall keine nennenswerte Logik mehr in der Ansicht. Dies verbessert also die Testbarkeit des Präsentators und des Modells entscheidend.

Im Gegensatz dazu bietet der Supervising Controller den Vorteil einer vereinfachten Handhabung. Durch die Datensynchronisation über Datenbindungen zwischen Modell und Ansicht wird der Synchronisationsaufwand wesentlich verringert, welches insgesamt weniger Quelltext erforderlich macht, als es bei der Passive View der Fall ist.

Referenzen

  1. Retirement note for Model View Presenter Pattern (englisch)

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Model–view–presenter — (MVP) is a derivative of the model–view–controller (MVC) software pattern, also used mostly for building user interfaces. In MVP the presenter assumes the functionality of the middle man (played by the controller in MVC). Additionally, the view… …   Wikipedia

  • Model View Presenter — is a software pattern considered as a derivative of the Model view controller. Pattern description The View is defined as an interface that the Presenter will use for getting and setting data to and from the Model. The View implementation will… …   Wikipedia

  • Model-View-Presenter — Шаблон проектирования Model View Presenter Model View Presenter (MVP)  шаблон проектирования, производный от MVC, который используется в основном для построения пользовательского интерфейса. В MVP Presenter берет на себя функциональность… …   Википедия

  • Model-view-presenter — Le Modèle Vue Presentation (en abrégé MVP, de l anglais Model View Presenter) est un Patron de conception, considéré comme un dérivé du Patron de conception Modèle Vue Contrôleur. Catégorie : Patron de conception …   Wikipédia en Français

  • Model-view-controller — (MVC) is an architectural pattern used in software engineering. Successful use of the pattern isolates business logic from user interface considerations, resulting in an application where it is easier to modify either the visual appearance of the …   Wikipedia

  • Model View Controller — Konzept. Hinweis: die durchgezogene Linie symbolisiert eine direkte Assoziation, die gestrichelte eine indirekte Assoziation (zum Beispiel über einen Beobachter). Model View Controller (englisch  model view controller (MVC), deutsch auch: M …   Deutsch Wikipedia

  • Model–view–controller — A general representation of the MVC design pattern. Model view controller concept. The solid line represents a direct as …   Wikipedia

  • Model View ViewModel — The Model View ViewModel (MVVM) is an architectural pattern used in software engineering that originated from Microsoft as a specialization of the Presentation Model design pattern introduced by Martin Fowler.[1] Largely based on the Model view… …   Wikipedia

  • Model-View-Controller — Шаблон проектирования Model View Controller Кон …   Википедия

  • Model-View-ViewModel — Шаблон проектирования Model View ViewModel Шаблон Model View ViewModel  применяется при проектировании архитектуры приложения. Первоначально был представлен сообществу Джоном Госсманом (John Gossman) в 2005 году как модификация шаблона… …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”