Model View Controller Pattern - users.etech.haw
Transcrição
Model View Controller Pattern - users.etech.haw
Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Model View Controller Pattern Christian Vogt HAW Hamburg 19. Dezember 2011 Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Inhaltsverzeichnis 1 Prolog 2 3 4 5 Einleitung Entwurfsmuster andere Muster Model-View-Controller Hintergrund Konzept Umsetzung Beispiele Überblick Beispiel in Java Beispiel in Swing Alternativen zu MVC Beispiele Fazit Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Einleitung Was soll euch dieser Vortrag vermitteln? Fragestellung • Was ist das MVC-Pattern? • Warum/Wofür gibt es das Pattern? • Wie wird es umgesetzt? • Gibt es Alternativen? • Wo kann ich mich weiter informieren? Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Entwurfsmuster Was kennzeichnet ein Entwurfsmuster? [frei nach wikipedia.de] • ein begrenztes Problem lösen • ein erprobtes Konzept bieten • auf realen Designs basieren • über das rein Offensichtliche hinausgehen • den Benutzer in den Entwurfsprozess einbinden • Beziehungen aufzeigen, die tiefergehende Strukturen und Mechanismen eines Systems umfassen. Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit andere Muster Was gibt es noch? Gang of Four Die meisten Entwurfsmuster sind 1994 von der Gang of Four definiert worden andere Musterarten Beispiele für Muster, welche keine Entwurfsmuster sind • Analysemuster • Idiome • Kommunikationsmuster • Organisationsmuster • Antimuster • Architekturmuster Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit andere Muster Was kennzeichnet ein Architekturmuster? • Entwurfsmuster beschreiben die Lösung eines lokalen Problems • Architekturmuster beschreiben eine Grundstruktur • Entwurfsmuster sind im Kleinen das, was Architekturmuster im Großen sind • Architekturmuster ziehen sich durch die ganze Anwendung Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit andere Muster Kategorien von Architekturmustern[wikipedia.de] • Chaos zu Struktur (engl. Mud-to-structure) • Verteilte Systeme • Interaktive Systeme • Adaptive Systeme Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit andere Muster Kategorien und Beispiele von Architekturmustern • Chaos zu Struktur (engl. Mud-to-structure) • Pipes und Filter • Schichtenarchitektur • Domain-Driven Design • Data Context Interaction • Verteilte Systeme • Serviceorientierte Architektur • Broker bzw. Vermittler • Client-Server • Interaktive Systeme • Model-View-Controller (MVC) • Presentation-Abstraction-Control (PAC) • Adaptive Systeme • Mikrokernel • Reflexion • Dependency Injection [Michael Kircher, Prashant Jain: Pattern-Oriented Software Architecture. Patterns for Resource Management. Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Hintergrund Was genau ist das MVC-Pattern? • Eine allgemeine Konzeptidee für Benutzeroberflächen. Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Hintergrund • Konzept stammt von Trygve Reenskaug (Xerox), 1979 • Erste Umsetzung für Benutzeroberflächen in Smalltalk-80 Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Konzept Strukturierung Aufteilung von Software in die drei Einheiten: • Datenmodell (engl. model) →Zustand • Präsentation (engl. view) →Anzeige • Programmsteuerung (engl. controller)→Verhalten Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Konzept Konzeptdiagramm durchgezogen: direkte Assoziation gestrichelt: indirekte Assoziation (z.B. über Observer) Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Konzept Komponente: Modell (model) • Kennt den Zustand des Systems • Gibt Informationen zurück (meist an den View) • Reagiert auf Änderungen (meist ausgelöst von Controllern) • In Event-basierten Systemen übernimmt das Model die Rolle des Oberservable“ (mit den Views als Observer) ” Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Konzept Komponente: Präsentation (view) • Enthält die Anzeigeelemente • Es kann viele Views geben, die ein gemeinsames Model verwenden • z.B. ein Formularfeld Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Konzept Komponente: Steuerung (controller) • Erhält Usereingaben und initiiert eine Antwort, in dem das Model aufgerufen wird • z.B. eine Formulareingabe, die an das Model weitergereicht wird • Es kann viele Views geben, die einen gemeinsamen Controller verwenden Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Konzept Warum/Wofür gibt es das Pattern? • Mit steigender Komplexität von Benutzeroberflächen wurde ein Konzept unabdingbar • Ziel des Musters ist ein flexibler Programmentwurf, der eine spätere Änderung oder Erweiterung erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten ermöglicht.[wikipedia.de] Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Umsetzung Wie wird es umgesetzt? (. . . ) Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Umsetzung Kontrollfluß 1 Ein Benutzer interagiert mit einer grafischen Oberfläche 2 Ein Controller reagiert auf den Benutzer mit Hilfe eines generierten Events (z.B. Mausklick) und führt eine entsprechende Aktion aus 3 Der Controller benachrichtigt das Model über die Aktion, was zu einer Änderung in diesem führen kann 4 Der View aktualisiert seine Anzeige 5 Der View wartet auf weitere Benutzereingaben (zurück zu 1) Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Umsetzung Kontrollfluß Beispiel 1 Ein Benutzer interagiert mit einer grafischen Oberfläche 1 Ein Artikel wird über einen Button in den Warenkorb gelegt 2 Ein Controller reagiert auf den Benutzer mit Hilfe eines generierten Events und führt eine entsprechende Aktion aus 2 Im Controller wird der Event-Handler addToShoppingCart()“ aufgerufen ” . 3 Der Controller benachrichtigt das Model über die Aktion, was zu einer Änderung in diesem führen kann 3 Im Model wird dem Warenkorb ein Artikel hinzugefügt . 4 Der View aktualisiert seine Anzeige 4 Die Anzeige wird aktualisiert und der neu hinzugefügte Artikel wird angezeigt 5 Der View wartet auf weitere Benutzereingaben 5 Warten zurück zu 1 Model View Controller Pattern . C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Umsetzung Unterschiedliche Implementierungen Durch unterschiedliche Implementierungsvarianten gibt es nicht definierte Funktionalitäten Beispiel: Formularvalidierung • In der View oder im Model? • Je nach Anwendungsfall! Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Umsetzung Unterschiedliche Implementierungen Durch unterschiedliche Implementierungsvarianten gibt es nicht definierte Funktionalitäten Beispiel: Datenaktualisierung des View • Observer-Pattern zur Aktualisierung der Anzeige • HTML Request-Response-Cycle Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Umsetzung Oft verwendete Begrifflichkeiten • Fat Model, Skinny Controller • Fat Controller - AntiPattern • Fat View Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Überblick 1 Einfaches Beispiel in Java 2 Verwendung in Java Swing Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Beispiel in Java Einfaches Beispiel in Java Eclipse-Projekt MVC-Easy Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Beispiel in Swing Umsetzung in Swing später! Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Gibt es Alternativen? Ja! Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Beispiele Ausbildungen des MVC-Pattern • Model-View-Presenter • Model-View-ViewModel (Microsoft WPF) • Model-ViewController (Swing) Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Beispiele MVC mit Fokus auf Testbarkeit: Model-View-Presenter Motivation • Tests von Oberflächen sind schwierig • Komplizierte Automatisierung Grundgedanke des MVP-Patterns Die eigentliche Darstellung (den View) komplett von technischer und fachlicher Logik freihalten[Praxisbuch Objektorientierung Galileo] Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Beispiele MVC mit Fokus auf Testbarkeit: Model-View-Presenter Umsetzung • Passive View“-Ansatz ” • View von jeglicher Logik freihalten • Keine Kommunikation zwischen View und Model • Presenter kennt nur ein View-Interface • View-Interface kann von einem Mock“-Objekt implementiert werden ” • UI-Logik lässt sich Testen Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Beispiele MVC von Microsoft: Model-View-ViewModel Umsetzung • Ähnelt stark MVP • Das ViewModel kennt keinerlei View-Komponenten • wird in Windows Presentation Forms verwendet Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Beispiele Vereinfachtes MVC: Model-ViewController Prinzip • Controller erledigen oft sehr gleichförmige Aufgaben • View und Controller werden zu einem UI-Element zusammengefasst • Verwendung in Java Swing • Beispiel folgt Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Beispiele Vereinfachtes MVC: Model-ViewController Java Swing Beispiel Eclipse-Projekt MVC-Swing Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Fazit • Eine Separierung nach dem Prinzip des MVC oder einem abgeleiteten Pattern ist grundsätzlich sinnvoll • MVC ist kein Allheilmittel, sondern nur ein Ansatz zur Problemlösung • Das Problem an sich muss selbst gelöst werden Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Wo kann ich mich weiter informieren? Quellen für diesen Vortrag • Swing: Java ist auch eine Insel, http://java.sun.com/products/jfc/tsc/articles/architecture/ • WPF: http://msdn.microsoft.com/de-de/magazine/cc785479.aspx • MVP: http://www.wildcrest.com/Potel/Portfolio/mvp.pdf, http://openbook.galileocomputing.de/oo Model View Controller Pattern C. Vogt Prolog Model-View-Controller Beispiele Alternativen zu MVC Fazit Vielen Dank für die Aufmerksamkeit! Model View Controller Pattern C. Vogt