www.wikidata.de-de.nina.az
Model View Presenter Abkurzung MVP wortlich etwa Modell Ansicht Prasentierer 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 uber einen Prasentierer engl presenter zu verbinden Dabei steht neben einer deutlich verbesserten Testbarkeit auch die strengere Trennung der einzelnen Komponenten im Gegensatz zu MVC im Vordergrund Der Presenter beinhaltet die Logik der Anwendung Er ist die Verbindung zwischen dem Modell und der Sicht 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 Verstandnis Seine Definition ist heute ausschlaggebend Inhaltsverzeichnis 1 Definition 1 1 Supervising Controller 1 2 Passive View 1 3 Unterschiede 2 Weblinks 3 EinzelnachweiseDefinition BearbeitenMVP basiert wie MVC auch auf drei Komponenten Dem Modell model der Ansicht view und dem Prasentierer presenter Model Das Modell stellt die Logik der Ansicht dar Dies kann auch die Geschaftslogik sein Uber das Modell muss jedoch alle Funktionalitat erreichbar sein um die Ansicht betreiben zu konnen Die Steuerung des Modells erfolgt allein vom Prasentierer Das Modell selbst kennt weder die Ansicht noch den Prasentierer View Die Ansicht enthalt keinerlei steuernde Logik und ist nur allein fur die Darstellung und die Ein und Ausgaben zustandig Sie erhalt weder Zugriff auf die Funktionalitat des Prasentierers noch auf das Modell Samtliche Steuerung der Ansicht erfolgt durch den Prasentierer Presenter Der Prasentierer ist das Bindeglied zwischen Modell und Ansicht Er steuert die logischen Ablaufe zwischen den beiden anderen Schichten und sorgt dafur dass die Ansicht ihre Funktionalitat erfullen kann Damit MVP seine eigentlichen Vorteile gegenuber MVC entfalten kann werden fur Modell und Ansicht jeweils Schnittstellen engl Interfaces verwendet Sie definieren den genauen Aufbau beider Schichten und der Prasentierer verknupft lediglich die Schnittstellen miteinander Dies gewahrleistet die vollstandige Austausch und Wiederverwertbarkeit des Modells und der Ansicht Resultierend aus der Austauschbarkeit der Ansicht lasst sich so vor allem ein double franzosisch fur Doppelganger fur die Ansicht verwenden um die Funktionalitat aus Perspektive der Oberflache mit Modultests engl unit tests zu prufen Im Jahre 2006 entschied sich Martin Fowler aufgrund von Erkenntnissen bei der praktischen Anwendung von MVP das ursprungliche 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 Supervising Controller wortlich etwa Uberwachende Steuerung ist ein Entwurfsmuster das aus der ursprunglichen Variante von MVP hervorgegangen ist und von Martin Fowler definiert wurde Hierbei ubernimmt die Ansicht moglichst alle Aufgaben zur Datensynchronisation wahrend sich der Prasentierer um alle anderen Ablaufe zwischen Modell und Ansicht kummert Um die Synchronisation moglichst zu vereinfachen kann auf Datenbindungen engl data bindings zuruckgegriffen werden Dabei stellt der Prasentierer Daten uber Klassen bereit die der Ansicht und dem Modell bekannt sind Der Prasentierer selbst sorgt nur noch fur die Ubertragung der Datenobjekte vom Modell zur Ansicht Hierdurch entfallt weiterer Synchronisationsaufwand vom Prasentierer da sich die Ansicht selbstandig uber die Datenobjekte synchronisiert Das Modell kann seinerseits ebenfalls uber die Datenobjekte auf innerhalb der Ansicht veranderte Daten zugreifen Passive View Bearbeiten Passive View wortlich etwa Untatige Ansicht ist ein Entwurfsmuster das aus der ursprunglichen Variante von MVP hervorgegangen ist und von Martin Fowler definiert wurde Im Gegensatz zum Supervising Controller existiert keine Verbindung uber ein Datenobjekt zwischen Modell und Ansicht Dies tragt dazu bei dass der Prasentierer jegliche Datensynchronisation zwischen Modell und Ansicht selbst durchfuhren 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 ausserst vereinfacht anders als dies beim Supervising Controller der Fall ist Unterschiede Bearbeiten In der Passive View verbessert sich die Testbarkeit gegenuber 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 Prasentierer gepruft Es verbleibt in diesem Fall keine nennenswerte Logik mehr in der Ansicht Dies verbessert also die Testbarkeit des Prasentierer und des Modells entscheidend Im Gegensatz dazu bietet der Supervising Controller den Vorteil einer vereinfachten Handhabung Durch die Datensynchronisation uber 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 BearbeitenModel 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 Retirement note for Model View Presenter Pattern englisch V DEntwurfsmusterErzeugungsmuster Abstrakte Fabrik Erbauer Fabrikmethode Prototyp Singleton Multiton ObjektpoolStrukturmuster Adapter Brucke Decorator Fassade Fliegengewicht Kompositum StellvertreterVerhaltensmuster Beobachter Besucher Interpreter Iterator Kommando Memento Schablonenmethode Strategie Vermittler Zustand Zustandigkeitskette Interceptor Nullobjekt ProtokollstapelMuster fur objektrelationale 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 SegregationNachrichtenubermittlungsmuster Message Command Message Document Message Event Message Request Reply Return Address Correlation Identifier Message Sequence Message Expiration Format Indicator 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 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 Message Translator Envelope Wrapper Content Enricher Content Filter Claim Check Normalizer Canonical Data Model 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 Control Bus Detour Wire Tap Message History Message Store Smart Proxy Test Message Channel PurgerAndere 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 ObjectSiehe auch Analysemuster Architekturmuster Abgerufen von https de wikipedia org w index php title Model View Presenter amp oldid 227082618