MVC (Model–View–Controller)
Einleitung
MVC ist eines der einflussreichsten UI-Architektur-Patterns.
Es trennt:
- Model – Zustand und Geschäftsregeln
- View – Darstellung
- Controller – Eingabeverarbeitung
Ziel ist:
Trennung von Interaktion, Darstellung und Logik.
Einordnung
MVC ist ein UI-Architektur-Pattern auf Applikationsebene.
Es ist:
- kein Systemstil
- kein Deployment-Modell
- kein verteiltes Architekturkonzept
Es strukturiert die Interaktion innerhalb einer Anwendung.
Historischer Kontext
MVC entstand in den 1970ern bei Xerox PARC im Smalltalk-Umfeld.
Das ursprüngliche Ziel war:
- mehrere Views auf denselben Zustand
- klare Trennung von Eingabe und Darstellung
Wichtig:
Das klassische MVC ist ein Desktop-Pattern, nicht primär ein Web-Pattern.
Klassisches MVC-Modell
Charakteristisch:
- Model kennt keine UI
- View beobachtet Model
- Controller vermittelt zwischen beiden
Moderne Web-Interpretation
Viele Web-Frameworks (z. B. Spring MVC) verwenden MVC anders:
- Controller verarbeitet HTTP-Requests
- Model ist oft Datenstruktur für Templates
- View rendert HTML
Das ist eine serverseitige Interpretation, nicht das klassische Smalltalk-MVC.
Zentrale Eigenschaften
1️⃣ Trennung der Verantwortlichkeiten
- Darstellung isoliert
- Geschäftslogik testbar
- UI austauschbar
2️⃣ Beobachter-Mechanismus
Model benachrichtigt View.
Problem:
- oft bidirektionale Abhängigkeiten
- schwer nachvollziehbarer Datenfluss
3️⃣ Mehrere Views auf ein Model
Klassischer Vorteil:
- unterschiedliche Darstellung desselben Zustands
Vorteile
- Klare Struktur
- Bessere Testbarkeit
- Verständliches Rollenmodell
- Gute Eignung für klassische UI-Systeme
Typische Probleme
1️⃣ Controller-Inflation
Bei komplexen UIs werden Controller:
- zu groß
- zuständig für zu viele Aspekte
2️⃣ Unklare Verantwortlichkeiten
In modernen Frameworks verschwimmen:
- View-Logik
- Controller-Logik
- State-Management
3️⃣ Bidirektionale Abhängigkeiten
Model → View View → Controller Controller → Model
Erzeugt komplexe Zustandsflüsse.
MVC vs moderne UI-Patterns
| Pattern | Datenfluss | State-Management |
|---|---|---|
| MVC | teilweise bidirektional | implizit |
| MVP | Presenter steuert View | klarer getrennt |
| MVVM | Data Binding | ViewModel als Adapter |
| MVI | unidirektional | explizite State-Reduktion |
Moderne SPA-Frameworks bevorzugen meist:
unidirektionalen Datenfluss
Wann sinnvoll?
- Server-Rendered Web-Anwendungen
- Desktop-Anwendungen
- Einfach strukturierte UI-Systeme
- Frameworks mit klarer MVC-Implementierung
Wann weniger sinnvoll?
- Hochdynamische SPAs
- Komplexe Zustandsverwaltung
- Reaktive Architekturen mit unidirektionalem Flow
Strategische Perspektive
MVC war ein Meilenstein.
Es hat:
- UI-Strukturierung professionalisiert
- spätere Patterns inspiriert
- die Trennung von Logik und Darstellung etabliert
Heute ist es oft:
- historisches Fundament
- nicht mehr state-of-the-art für komplexe SPAs
Fazit
MVC ist:
- ein fundamentales UI-Pattern
- historisch prägend
- weiterhin relevant im richtigen Kontext
Für moderne, reaktive Frontends sind jedoch:
- MVVM
- MVI
- unidirektionale State-Patterns
häufig geeigneter.