Zum Hauptinhalt springen

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

PatternDatenflussState-Management
MVCteilweise bidirektionalimplizit
MVPPresenter steuert Viewklarer getrennt
MVVMData BindingViewModel als Adapter
MVIunidirektionalexplizite 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.