Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

model-view-controller [2010/10/24 14:32] (aktuell)
Christian Mann angelegt
Zeile 1: Zeile 1:
 +== Historisches ==
 +MVC ist ein sehr altes [[Architekturmuster]], welches bereits in den frühen 70er Jahren im Rahmen der Sprache [[Smalltalk]] entwickelt wurde.
 +== Struktur ==
 +Die Grundstruktur des Musters baut auf der Unterscheidung dreier verschiedener Objekttypen auf:
 +  * Model -- Objekte, die persistentes Wissen (= Daten) repräsentieren und um Geschäftsprozesswissen erweitert werden;
 +  * View -- Objekte, die Models angemessen visualisieren (d.h. in der Regel User-Interface-Klassen);
 +  * Controller -- Objekte, die die Zusammenarbeit von Models und Views koordinieren ("technische Controller").
 +
 +Die Zusammenarbeit zwischen den einzelnen Objekt(-typen) wird mittels des [[http://c2.com/cgi/wiki?ObserverPattern|Observer]]-Musters koordiniert:
 +  * Der View arbeitet direkt auf dem Model als Datenpuffer.
 +  * Das Model ist für seine eigene Konsistenzprüfung zuständig.
 +  * View und Controller registrieren sich bei dem Model auf Änderungsereignisse (->[[http://c2.com/cgi/wiki?ObserverPattern|Observer]]).
 +  * Das Model informiert Views und Controller über alle Änderungen.
 +  * Wenn eine Konsistenzprüfung fehlgeschlagen ist, macht das Model die Änderung rückgängig und informiert den View (über diese neuerliche Änderung).
 +  * Der Controller wird auf der Basis der Änderungen des Models ggfls. Änderungen im View vornehmen (z.B. komplexe Dialogverschaltungen...)
 +
 +== Anwendungen ==
 +MVC kann als [[Architekturmuster]] auf der Ebene des Dialogdesigns auftreten, aber auch in kleinerem Maßstab; so sind z.B. in der java.swing-Bibliothek viele Controlls intern nach dem MVC-Muster strukturiert.\\
 +Eine Listbox hat etwa
 +  * ein Model, nämlich die dahinter liegende Collection-Instanz, welche die aufgelisteten Objekte enthält;
 +  * einen View, d.h. die eigentlich sichtbare Listbox;
 +  * und einen Controller, nämlich die Instanz der Policy-Klasse (welche z.B. bestimmt, ob Single- oder Multiple-Selection möglich ist...)
 +
 +== MVC und ECB ==
 +Auf den ersten Blick sehen [[Entity-Control-Boundary|ECB]] und MVC sehr ähnlich aus:
 +  * Entities = Models
 +  * Boundaries = Views
 +  * Controls = Controller
 +
 +Allerdings unterscheiden sie sich bei näherer Betrachtung erheblich hinsichtlich der Rolle der Controls/Controller: Der MVC-Controller hat rein technische Steuerungsfunktion, wohingegen das [[Entity-Control-Boundary|ECB]]-Control der designierte Ort für Geschäftsprozessfunktionalität ist (die in MVC den Model-Klassen zugewiesen wird)!
 +
 +MVC trägt damit Peter Coads Erkenntnis Rechnung, dass das Daten-Layout erheblich stabiler ist, als das Geschäftsprozessmodell, wohin gegen [[Entity-Control-Boundary|ECB]] eben dieser Volatilität des Geschäftsprozessmodells Rechnung trägt, indem es die Funktionalität eines Geschäftsprozesses (= --cum grano salis-- [[Use Case]]) pflegefreundlich in einem Control-Objekt kapselt.
 +
 + --- //[[dr.mann@ipponsoft.de|Christian Mann]] 2010/10/24 14:30//
 
model-view-controller.txt · Zuletzt geändert: 2010/10/24 14:32 von Christian Mann
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki