Katalog
concept#Architektur#Softwareentwicklung#Integration#Produkt

Model-View-Presenter (MVP)

Ein UI-Architekturmuster zur Trennung von Darstellung, Präsentationslogik und Datenmodell.

Model-View-Presenter (MVP) ist ein UI-Architekturmuster zur Trennung von Darstellung, Logik und Daten.
Etabliert
Mittel

Klassifikation

  • Mittel
  • Technisch
  • Architektur
  • Fortgeschritten

Technischer Kontext

Unit-Test-Frameworks (z. B. JUnit, NUnit)Mocking-Bibliotheken (z. B. Mockito)UI-Frameworks (z. B. WinForms, Android SDK, WPF)

Prinzipien & Ziele

Klare Trennung von Darstellung und LogikPresenter als einzige Schicht mit UI-LogikViews bleiben passiv und kennen keine Geschäftslogik
Umsetzung
Team, Domäne

Use Cases & Szenarien

Kompromisse

  • Presenter wird selbst zur komplizierten Geschäftslogik (God Object)
  • Unsachgemäße Schnittstellendefinition erhöht Kopplung
  • Fehlende Disziplin führt zu vermischten Verantwortlichkeiten
  • Halte Views so passiv wie möglich; Logik im Presenter.
  • Schreibe Presenter-Unit-Tests bevor UI-Integration.
  • Vermeide Geschäftslogik im Presenter; delegiere an Domänenschicht.

I/O & Ressourcen

  • UI-Spezifikationen und Benutzeranforderungen
  • Existierendes Domänenmodell/Backend-APIs
  • Testinfrastruktur (Unit-Tests, Mocks)
  • Getrennte Presenter-, View- und Model-Komponenten
  • Automatisierte Tests für Presenter
  • Definierte Schnittstellen und Adapter

Beschreibung

Model-View-Presenter (MVP) ist ein UI-Architekturmuster zur Trennung von Darstellung, Logik und Daten. Der Presenter vermittelt zwischen Model und View, erhöht die Testbarkeit und trennt Verantwortlichkeiten klar. MVP eignet sich für komplexe Benutzeroberflächen mit wiederverwendbarer Präsentationslogik, modularer Struktur und verringerter Kopplung.

  • Bessere Testbarkeit durch isolierte Presenter
  • Klare Verantwortlichkeitsgrenzen zwischen UI und Domäne
  • Wiederverwendbare Präsentationslogik über Plattformen

  • Kann Boilerplate-Code durch viele Schnittstellen erzeugen
  • Übermäßige Nutzung führt zu zu vielen Presenter-Klassen
  • Nicht immer optimal für einfache, rein deklarative UIs

  • Testabdeckung der Presenter

    Prozentualer Anteil der Presenter-Funktionen, die durch automatisierte Tests abgedeckt sind.

  • Anzahl der Presenter pro View

    Misst die Modularität und Granularität der Präsentationsschicht.

  • Zeit bis zur UI-Änderung (Durchlaufzeit)

    Zeit, die benötigt wird, um eine UI-Änderung zu implementieren und zu testen.

Desktop-Anwendung mit klaren Presenter-Tests

Eine Finanz-Desktop-Anwendung nutzt Presenter, um komplexe Eingabelogik zu kapseln und automatisiert zu testen.

Android-App mit Mosby-Framework

Eine Android-App implementiert MVP mittels der Mosby-Bibliothek zur Wiederverwendung von Presenter-Logik.

Refactoring einer WinForms-Oberfläche

Legacy WinForms-Code wurde schrittweise in Presenter ausgelagert, was die Testbarkeit verbesserte.

1

Identifiziere Views und extrahiere UI-Logik in Presenter.

2

Definiere klare Interfaces zwischen View und Presenter.

3

Implementiere Presenter mit Unit-Tests und verwende Mocks für Views/Model.

4

Integriere Presenter schrittweise in bestehende Views und refactore wiederholt.

⚠️ Technische Schulden & Engpässe

  • Unrefaktorierte Presenter mit gemischter Logik
  • Veraltete Adapter zwischen Presenter und Model
  • Fehlende Testabdeckung in kritischen Presenter-Pfaden
Presenter-KomplexitätSchnittstellen-OverheadTest-Abdeckungsaufwand
  • Verlagerung kompletter Domänenlogik in Presenter statt in Domänenschicht.
  • Einführung von MVP für sehr einfache Formular-Views ohne Nutzen.
  • Erzeugung vieler feingranularer Presenter mit redundanter Verantwortung.
  • Presenter wird zum Bottleneck für Änderungen, wenn zu viel Verantwortung zentralisiert ist.
  • Unklare Interface-Verträge führen zu wiederholtem Refactoring.
  • Fehlende Tests erlauben schleichende Vermischung von Zuständigkeiten.
Kenntnis von Architekturmustern (MVP/MVC)Fähigkeit, Schnittstellen zu definieren und zu mockenErfahrung mit Unit-Tests und TDD
Testbarkeit der PräsentationslogikWiederverwendbarkeit über PlattformenGeringe Kopplung zwischen UI und Domäne
  • Plattform-API kann passive Views erzwingen
  • Einschränkungen von UI-Frameworks können Presenter-Design beeinflussen
  • Team-Erfahrung mit Muster und Testautomatisierung erforderlich