Model View ViewModel
Model View ViewModel (MVVM) ist ein Entwurfsmuster und eine Variante des Model-View-Controller-Musters (MVC). Es dient zur Trennung zwischen Darstellung und Logik der Benutzerschnittstelle (UI) und des Software-Backends. Das Entwurfsmuster ist die Standardimplementierung von UI-Plattformen wie Cocoa (Apple), Windows Presentation Foundation (WPF, Microsoft) und JavaFX (Oracle). Im Webbrowser wird das Muster durch bestimmte JavaScript-Frameworks wie React oder Knockout.js verfügbar, welche den Zustand einer HTML5-Benutzeroberfläche verwalten können. Die Unterteilung der Benutzeroberfläche in Komponenten, die aufeinander aufbauen und schlussendlich als View die gesamte Applikationsoberfläche darstellen, wird Compositing genannt und ist typisch für MVVM-Anwendungen.
Das MVVM-Entwurfsmuster erfordert neben dem Kompositum-Entwurfsmuster auch das Beobachter-Entwurfsmuster, da das ViewModel den Zustand der UI abbildet, der sich wiederum durch Eingabe- und andere Ereignisse ändert. Die unmittelbare Reaktion der UI auf Änderungen im ViewModel und umgekehrt realisiert die Echtzeit-Datenbindung des Musters.
MVVM erlaubte bei seiner Einführung die heute gebräuchliche Rollentrennung von UI-Designern im Frontend und Entwicklern im Backend, wodurch Anwendungsschichten von verschiedenen Arbeitsgruppen entwickelt werden konnten. Im Desktop-Umfeld eingeführt, findet sich das MVVM-Entwurfsmuster heute in den meisten webbasierten Clients.