Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Model View Presenter – Wikipedia
Model View Presenter – Wikipedia
aus Wikipedia, der freien Enzyklopädie
Der Presenter beinhaltet die Logik der Anwendung. Er ist die Verbindung zwischen dem Modell und der Sicht.

Model View Presenter (Abkürzung MVP; wörtlich etwa ‚Modell-Ansicht-Präsentierer‘) ist ein Entwurfsmuster in der Softwareentwicklung, das aus dem Model View Controller (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äsentierer (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.

Definition

[Bearbeiten | Quelltext bearbeiten]

MVP basiert wie MVC auch auf drei Komponenten: Dem Modell (model), der Ansicht (view) und dem Präsentierer (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äsentierer. Das Modell selbst kennt weder die Ansicht noch den Präsentierer.
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äsentierers noch auf das Modell. Sämtliche Steuerung der Ansicht erfolgt durch den Präsentierer.
Presenter
Der Präsentierer 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. Sie definieren den genauen Aufbau beider Schichten, und der Präsentierer 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 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

[Bearbeiten | Quelltext bearbeiten]

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äsentierer 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 der Präsentierer Daten über Klassen bereit, die der Ansicht und dem Modell bekannt sind. Der Präsentierer selbst sorgt nur noch für die Übertragung der Datenobjekte vom Modell zur Ansicht. Hierdurch entfällt weiterer Synchronisationsaufwand vom Präsentierer, da sich die Ansicht selbständig über die Datenobjekte synchronisiert. Das Modell kann seinerseits ebenfalls über die Datenobjekte auf innerhalb der Ansicht veränderte Daten zugreifen.

Passive View

[Bearbeiten | Quelltext bearbeiten]

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äsentierer 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

[Bearbeiten | Quelltext bearbeiten]

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 Mock-Objekt ersetzt, wird so auch der Quelltext zur Synchronisation im Präsentierer geprüft. Es verbleibt in diesem Fall keine nennenswerte Logik mehr in der Ansicht. Dies verbessert also die Testbarkeit des Präsentierer 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.

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • Model-View-Presenter Definition von Taligent (englisch, PDF, 154 KiB)
  • Herkunft und Funktionsweise von Model-View-Presenter (englisch)
  • Supervising Controller (englisch)
  • Passive View (englisch)
  • Garry Pilkington: Using MVP with ASP.NET Web Forms. In: Don't Believe The Type. 4. Juni 2013, abgerufen am 14. August 2013 (englisch, Implementierung von MVP mit ASP.NET WebForms). 

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ Retirement note for Model View Presenter Pattern (englisch)
Entwurfsmuster
V – D
Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objekt-
relationale Abbildung

Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation

Nachrichten-
übermittlungsmuster
Integrationsarten

File Transfer | Shared Database | Remote Procedure Invocation | Messaging

Nachrichtenaufbau

Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator

Endpunkte

Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator

Kanäle

Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus

Nachrichtenvermittlung

Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker

Nachrichtenumwandlung

Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model

Systemmanagement

Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger

andere

Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object

Siehe auch:  Analysemuster | Architekturmuster | Integrationsmuster | SOA-Muster
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Model_View_Presenter&oldid=227082618“
Kategorie:
  • Entwurfsmuster

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id