MVC, MVP, MVVM – Vergleich von GUI-Architekturmuster
Dieser Beitrag ist eine Begriffserklärung zu MVC, MVP und MVVM – inklusive Prüfungsfragen, Kernelementen und Tags.
In a Nutshell
MVC, MVP und MVVM trennen Benutzeroberfläche, Logik und Datenmodell, um GUI-Anwendungen wartbarer und testbarer zu machen.
Kompakte Fachbeschreibung
- MVC: Controller vermittelt zwischen View und Model.
- MVP: Presenter koordiniert aktiv View und Model; View ist möglichst „dumm“.
- MVVM: View bindet an ViewModel (Data Binding); UI-Updates sind deklarativer.
Prüfungsrelevante Stichpunkte
- MVC: View sendet Eingaben an Controller, Controller ändert Model
- MVP: Presenter kennt View und Model, View ist „dumm“
- MVVM: Datenbindung zwischen View ↔ ViewModel
- Einsatz je nach Framework (z.B. MVVM in WPF, MVC in Spring)
- Praxis: Strukturierung, Testbarkeit
- Security: Validierung im Controller/Presenter/ViewModel
- Wirtschaftlichkeit: Wartbarkeit
- Doku: Diagramme sinnvoll in GUI-Projekten
Kernkomponenten
- Model
- View
- Controller (MVC)
- Presenter (MVP)
- ViewModel (MVVM)
- Datenbindung
- Events/Callbacks
- Testbarkeit (Mocking)
- Validierung
- Entkopplung per Interfaces
Praxisbeispiel (Login)
MVC: View → Controller → Model → View
MVP: View → Presenter → Model → View
MVVM: View bindet Felder an ViewModel, Button triggert Command
Vorteile und Nachteile
Vorteile
- Klare Trennung von Zuständigkeiten
- Höhere Testbarkeit
- Bessere Wartbarkeit
- Parallele Entwicklung möglich
Nachteile
- Overhead bei kleinen Projekten
- Datenbindung kann Debugging erschweren (MVVM)
Typische Prüfungsfragen (mit Kurzantwort)
- Ziel von MVC/MVP/MVVM? Trennung von View/Model/Steuerung.
- Hauptunterschiede? Controller vs Presenter vs ViewModel + Binding.
- Wo ist MVVM typisch? WPF/.NET, Frameworks mit Binding.
- Vorteil MVP gegenüber MVC? Bessere Testbarkeit durch Presenter + Interface.
Glossar
| Begriff | Definition |
|---|---|
| MVC | Model-View-Controller |
| MVP | Model-View-Presenter |
| MVVM | Model-View-ViewModel |
Freie Antwort
In IHK-Projekten mit GUI solltest du eines der Muster wählen und sauber dokumentieren (z.B. Diagramm der Datenflüsse). In CLI-Tools ist der Overhead meist unnötig.
Lernstrategie
- Tabelle (MVC/MVP/MVVM) erstellen.
- Mini-App in mindestens einem Muster implementieren.
- Unterschiede stichpunktartig üben.
- Keine Geschäftslogik in UI-Komponenten.
Themenanalyse
- Kern: UI-Strukturierung
- Herausforderungen: Binding/Strukturkonflikte
- Sicherheit: Validierung
- Doku: Interaktionsdiagramme
- Wirtschaftlichkeit: Wartbarkeit
Weiterführende Infos
- https://learn.microsoft.com/en-us/dotnet/architecture/mvvm/
- https://spring.io/guides/gs/serving-web-content/