VIPER (Entwurfsmuster)
# VIPER (Entwurfsmuster)

VIPER ist ein Software-Entwurfsmuster. Beim Namen handelt sich um ein Akronym, welches für View, Interactor, Presenter, Entity und Router steht. Es bezeichnet somit die einzelnen Bestandteile einer Softwarearchitektur und dient ähnlich wie Model View Controller oder Model View ViewModel zur Trennung von Verantwortlichkeiten zwischen einzelnen Programmbestandteilen innerhalb einer Anwendung welche zumindest zum Teil aus der Implementierung eines User Interface besteht.

## Geschichte

Das Pattern wurde ursprünglich von Mutual Mobile, einem Entwickler mobiler Software, entwickelt um die Testbarkeit der einzelnen Architekturkomponenten zu verbessern.

## Beschreibung

Wie andere Entwurfsmuster setzt VIPER auf die Trennung von mehr oder weniger strikt definierten Verantwortlichkeiten im Programmablauf. Das Binden der einzelnen Komponenten kann bspw. über Delegation oder ein anderes Muster erfolgen. Die einzelnen Komponenten haben folgende Verantwortlichkeiten:

* View: Darstellung der UI und Weiterleitung von Nutzereingaben an den Presenter.
* Presenter: Weiterleitung von Nutzereingaben an den Router oder an den Interactor. Aufbereitung von Modelldaten für die Darstellung im View.
* Router: Beschreibt die Navigationslogik zwischen einzelnen UI Komponenten.
* Interactor: Bereitstellung der für den Presenter relevanten Modelldaten und der Methoden, diese Modelldaten aus den Eingaben des Nutzers zu manipulieren. Hier würde gegebenenfalls die Geschäftslogik der Anwendung umgesetzt werden.
* Entity: Die Modell-Objekte welche vom Interactor genutzt werden.
