Begriffsklärung MVC
Die Abkürzung "MVC" steht für "Model", "View" und "Controller".
Diese drei Bestandteile bilden den Kern des MVC-Modells.1
Es wird eingesetzt, um einen einheitlichen Aufbau von Klassen,
Methoden und Paketen zu definieren sowie den Ablauf von zusammenarbeitenden
Komponenten in einer Oberfläche zu strukturieren.
Dabei werden die
drei Komponenten "Oberfläche", "Controller" und "Modell" aus der Anwendung
herausgetrennt und voneinander unabhängig betrachtet:
Als "Oberfläche" wird das UI2 für den Benutzer bezeichnet. Auf ihr befinden
sich grafische Elemente wie Buttons, Checkboxen oder Listen. In der Oberfläche
ist keine Logik enthalten, so dass bei alleiniger Auslieferung lediglich ein
einfacher Clickdummy vorzufinden wäre.
Die eigentlichen Daten (etwa Inhalte für Listboxen oder Einträge von Tabellenzeilen)
werden durch das "Modell" definiert. Häufig werden Daten, z. B. die Liste aller Einträge
in einem elektronischen Telefonbuch, in einer Datenbank persistiert. Die Aufgabe des Modells
ist es, diese auszulesen, zu schreiben oder zu aktualisieren und über definierte Schnittstellen
zur Verfügung zu stellen.
Controllerschicht
Um Abhängigkeiten zwischen den beiden Schichten zu vermeiden, wird eine dritte Schicht,
der "Controller", erstellt. Dieser ist verantwortlich für die Kommunikation zwischen der
Oberfläche und dem Modell. Der Vorteil dieser Komponente besteht darin, dass es keine
Abhängigkeit zwischen der "View" und dem "Model" gibt.
Aufgrund der Tatsache, dass View und Model keinerlei Informationen übereinander besitzen,
können beide Schichten ausgetauscht werden, ohne die jeweils andere ändern zu müssen
(Prinzip der losen Kopplung). Dies ist beispielsweise dann der Fall, wenn eine bestehende
Datenbank neben einer Web-Oberfläche auch durch eine Swing-Oberfläche3 bedient werden soll.
Zwar muss die View-Schicht in jedem Fall neu programmiert werden, jedoch kann der Controller
Model komplett übernehmen.
Abbildung 4 verdeutlicht das Zusammenspiel der drei Komponenten "Model", "View" und "Controller":
Abbildung 4: MVC-Struktur
Quelle: Eigene Darstellung
Abbildung 4 verdeutlicht, dass View und Model voneinander unabhängig sind und lediglich
über den Controller eine Verknüpfung besteht.
Innerhalb der einzelnen Schichten werden nun weitere Muster angewandt.
So kann beispielsweise bei der Umsetzung des Models das Observer-Muster angewandt werden.
Dabei wird eine View-Komponente (z. B. eine Listbox) durch den Controller bei dem Model
registriert. Sobald das Model eine Änderung an den Daten vornimmt, kann es die durch den
Controller registrierte View-Komponente benachrichtigen. Diese aktualisiert daraufhin den
Inhalt in der View. Zwar lässt diese Verbindung auf eine Abhängigkeit zwischen View und
Model schließen, jedoch existiert genau diese nicht. Durch den Einsatz von speziellen
Observer-Klassen wird die Verbindung entkoppelt und kann für andere View-Komponenten,
z. B. eine Swing-Oberfläche, erneut und ohne zusätzlichen Programmieraufwand im Model
registriert werden. Abbildung 5 zeigt den Ablauf innerhalb des MVC-Modells:
Abbildung 5: Kreislauf im MVC-Modell
Quelle: Eigene Darstellung in Anlehnung an Entwurfsmuster, Ausgabe 2006, Seite 530
Innerhalb der View-Schicht kommt in der Regel das Decorator-Pattern zum Einsatz.
Bei diesem werden grafische Elemente ineinander geschachtelt und bilden somit ein
neues Element. Als Beispiel kann eine Tabelle zur Anzeige von Personendaten dienen,
welche sich in einem scrollbaren Rahmen befindet, der wiederum in einem Fenster platziert ist.
Die Verschachtelungstiefe solcher Strukturen ist beliebig. Sie ist abhängig von den
jeweiligen Anforderungen an die Oberfläche.