< Zurück   INHALT   Weiter >

5.4 Kopplung der Benutzerschnittstelle und Geschäftslogik

Windows Anwendungen, deren Benutzerschnittstelle auf der Windows Presentation Foundation basieren, nutzen das Model-View-ViewModel-Architekturmuster. iOS-Anwendungen hingegen nutzen stringent das Model-View-ControllerArchitekturmuster.

Kapitel 5.4 beschreibt anhand einer Konzeption (Kapitel 5.4.1) und einer exemplarischen Realisierung (Kapitel 5.4.2), wie sich beide Architekturmuster miteinander kombinieren lassen, um nicht gänzlich auf die Vorteile des ViewModels zu verzichten.

5.4.1 Konzeption

Die naheliegendste Lösung ist, das MVC-Muster gegen das MVVM-Muster auszutauschen. Das ist aber aus technischen Gründen nicht möglich, da in iOS nicht die notwendigen Komponenten für die Verknüpfung von Ansicht und ViewModel existieren. Dennoch soll auf die Vorteile des ViewModels nicht verzichtet werden. Eine denkbare Lösung ist die Kombination beider Architekturmuster

Abbildung5-21.png

Abb. 5-21 Integration MVVM-Muster und MVC-Muster

Dabei wird der Controller (im weiteren Verlauf ViewController genannt) zwischen Ansicht und ViewModel geschoben. Er übernimmt die Aufgaben, die ansonsten das WPF-Framework erledigt hat. Zu diesen Aufgaben gehören:

- Automatische Aktualisierung der Interaktionselemente (read)

- Automatische Aktualisierung des ViewModels (write)

- Weiterleitung von Befehlen

Außerdem übernimmt der ViewController einzelne Aufgaben des ViewModels. Dazu zählen:

- Steuerung des Lebenszyklus der Ansicht

- Verwalten eingebetteter Ansichten und modaler Dialoge

Die Kommunikation zwischen Model und ViewModel bleibt hierdurch unberührt. Das ViewModel spezialisiert weiterhin die Daten des Models für die assoziierte Ansicht und liefert so einen erheblichen Mehrwert für die Anwendung. Da sich der ViewController beispielsweise nicht um die Spezialisierung der Daten des Objektmodells kümmern muss.

Für Spezialisierung der Daten des Objektmodells greift das ViewModel auf eine weitere Komponente zurück. Diese Komponente heißt Controller, die aber mit dem Controller des MVC-Musters nichts gemein hat. Der Controller selektiert die benötigten Daten und speichert sie in einem TransferObjekt ab, welches vom ViewModel referenziert wird. Das ViewModel stellt diese TransferObjekte in Form von Eigenschaften (Properties) bereit, auf die der ViewController zugreifen kann.

Sobald sich die Daten im Objektmodell ändern, aktualisiert der Controller das TransferObjekt. Über diesen Vorgang wird der ViewController informiert und aktualisiert anschließend die Ansicht.

In den meisten Anwendungen, die das MVVM-Muster einsetzen, steuert das ViewModel zusätzlich den Zustand einer Ansicht. Diese Zustände beschreiben den Lebenszyklus einer Ansicht. Das ViewModel besitzt für jeden Zyklus eine Methode, die individuell überschrieben werden kann. Ein Zustandsautomat steuert den Aufruf dieser Methoden.

Diese Steuerung übernimmt in der iOS-Version der ViewController. Dennoch bleiben diese Methoden bestehen, da sie zustandsabhängige Algorithmen ausführen. Jedoch wird ihr Aufrufverhalten angepasst. In iOS ruft nicht mehr der Zustandsautomat diese Methoden auf, sondern der ViewController. Das nachfolgende Klassendiagramm zeigt den ganzheitlichen Aufbau der Kopplung des MVVM- und MVC-Musters

MVVM-MVC.png

Abb. 5-22 Klassendiagramm Kopplung MVVM- und MVC-Muster

 
< Zurück   INHALT   Weiter >