Auf dieser Seite
In der Softwaretechnik ist ein Entwurfsmuster ein häufig auftretendes Problem beim Softwareentwurf. Bei einem Entwurfsmuster handelt es sich nicht um einen endgültigen Entwurf, der direkt in gelösten Code umgewandelt werden kann.
Ein großes Problem bei der Softwareentwicklung ist die enge Kopplung von Code, d.h. selbst eine kleine Änderung in einem Teil des Codes führt zu Änderungen oder Fehlern in einem anderen Teil des Codes. Der Code ist nicht Unit-Test-freundlich und nicht wiederverwendbar.
Einführung
Derzeit gibt es viele Architekturansätze wie MVP, FLUX, MVI, MVVM, die die oben genannten Probleme lösen. Wir können jeden Ansatz verwenden, um unseren Code korrekt zu pflegen, so dass alles gut funktioniert, kurz gesagt, ein glückliches Entwicklerleben. Dieser Artikel diskutiert das MVVM-Designmuster in Android und wie wir bestehende Probleme mit dem MVVM-Designmuster lösen können.
Die wichtigsten Komponenten des MVVM-Entwurfsmusters sind :
- View - Informiert das ViewModel über die Aktionen des Benutzers
- ViewModel - Zeigt Datenströme an, die für die Ansicht relevant sind
- DataModel - Abstrahiert die Datenquelle. Das ViewModel arbeitet mit dem DataModel, um die Daten zu erhalten und zu speichern.
Kurze Erläuterung des MVVM-Entwurfsmusters
Google führte Android Architecture Components ein, die ViewModel anstelle von Presenter enthielten und damit den Beweis erbrachten, dass auch Google MVVM unterstützt.
ViewModel
ViewModels sind einfache Klassen, die mit der Logik/Modell-Schicht interagieren und Zustände/Daten preisgeben, ohne zu wissen, von wem oder wie diese Daten konsumiert werden. Nur View(Activity) verweist auf ViewModel und nicht umgekehrt; dies löst unser Problem der engen Kopplung. Eine einzelne Ansicht kann einen Verweis auf mehrere ViewModels haben.
In Android stellt die Aktivität eine Ansicht im MVVM-Designmuster dar. Die View ist für die visuelle Darstellung von Anwendungen und die Dateneingabe durch den Benutzer zuständig. Dieser Teil sollte die Daten auf keinen Fall verarbeiten. Seine Funktion besteht nur darin, die Eingabe wie Berührung oder Streichen zu erkennen und zu visualisieren.
Das ModelView-ViewModel-Architekturmuster wurde mit der Geburt der DataBinding-Bibliothek in Android eingeführt. Sie können die Datenbindung in der app.gradle.
Add these lines in-app.Gradle inside android{} tag. Then put your XML layout code under tag. This will generate a binding class, and you can access this class from the activity. You can see we can directly access the getText() method from XML.
Nach setContentView inactivity setzen Sie einen Verweis auf das View Model.
DataModel
DataModel enthält die Daten der Anwendung. Es kann nicht direkt mit der Ansicht kommunizieren. Im Allgemeinen wird empfohlen, die Daten dem ViewModel über Observables zugänglich zu machen.
Vorteile der Verwendung des MVVM-Entwurfsmusters
- Die Testbarkeit Ihres Codes wird erhöht.
Im folgenden Codeschnipsel testen wir die Methode getText() im ViewModel. Sie können Ihre Daten simulieren und das erwartete Ergebnis überprüfen.
- Ihr Code ist entkoppelt.
- Die Paketstruktur ist noch einfacher zu navigieren.
- Das Projekt ist noch einfacher zu pflegen.
- Ihr Team kann neue Funktionen noch schneller hinzufügen.
Schlussfolgerung
MVVM kombiniert die Vorteile der Trennung von Belangen, die MVP bietet, und nutzt gleichzeitig die Vorteile von Datenbindungen. Das Ergebnis ist ein Muster, bei dem das Modell so viele Operationen wie möglich steuert und die Logik in der Ansicht minimiert wird.