Zum Inhalt springen

MVC

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. August 2004 um 12:47 Uhr durch Norcas (Diskussion | Beiträge) (M/V/C unter eine Überschrift). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Das Model-View-Controller-Konzept (MVC) in der Softwareentwicklung trennt eine Anwendung in drei Schichten auf.

Schichten

Model

Das Datenmodell enthält die dauerhaften (persistenten) Daten der Anwendung. Das Model hat also Zugriff auf diverse Backend-Speicher wie zum Beispiel Datenbanken. Das Model kennt weder die View noch den Controller, es weiß also gar nicht, wie, ob und wie oft es dargestellt und verändert wird. Änderungen im Model werden allerdings über einen Update-Mechanismus bekannt gegeben, indem ein Event ausgelöst wird. Dazu muß sich zumindest die View als abhängiges Objekt am Model registrieren, um über Datenänderungen informiert zu werden.

View

Die Darstellungsschicht präsentiert die Daten - in der Regel jedoch nicht notwendigerweise zwecks Anzeige. Die Programmlogik sollte aus der View entfernt werden. Die View kennt das Model und ist dort registriert, um sich selbsttätig aktualisieren zu können.

Controller

Die Steuerungsschicht realisiert die eigentliche Geschäftsintelligenz und bildet mit Hilfe der anderen Schichten die Prozesse ab. Sie steuert den Ablauf, verarbeitet Daten, entscheidet, welche View aufgerufen wird, etc.

Analyse

Der übliche Fall wird sein, dass eine View und ein Controller zusammenspielen, sich also auch gegenseitig kennen, und sich auf ein Model beziehen. Ein Model kann aber von mehreren View-Controller-Paaren gesteuert werden. Beispielsweise kann ein Zahlenwert sowohl über ein Eingabefeld als auch über einen Schieberegler steuerbar sein. Verändert einer der dazugehörigen Controller den Wert, so sendet das Model ein Event, der dazu führt, dass sich beide grafischen Controls parallel aktualisieren.

Das MVC-Konzept wurde zunächst für Benutzeroberflächen in Smalltalk durch Trygve Reenskaug beschrieben, gilt mittlerweile aber als defacto Standard für den Grobentwurf aller komplexen Softwaresysteme (mit diversen Verfeinerungen und oftmals mehreren jeweils nach MVC pattern aufgeteilten Modulen).

Umstritten ist, ob es sich hierbei um ein Entwurfsmuster handelt. Nach strenger Auslegung ist das nicht der Fall, da es sich nicht um ein allgemeines, beliebig verwendbares Muster handelt, sondern um einen ganz konkreten Anwendungsfall, nämlich der Grafischen Oberfläche.

Trygve Reenskaug - MVC