
MVC ist ein sauberer Ansatz in Android, der die Aussicht vom Controller entlässt. Der Controller ist nur für die Aktualisierung von Modellen verantwortlich. Sobald das Modell aktualisiert wird, kann es Ansichten benachrichtigen und die Ansicht kann mithilfe der richtigen Rückrufe aktualisiert werden. In der traditionellen MVC gibt es eine
Modell : fungiert als Modell für Daten
Ansicht : befasst sich mit der Ansicht auf den Benutzer, der die Benutzeroberfläche sein kann
Controller : Steuert die Interaktion zwischen Modell und Ansicht, wobei Ansicht den Controller aufruft, um das Modell zu aktualisieren. Eine Ansicht kann bei Bedarf mehrere Controller aufrufen.
Einige Nachteile von MVC können unter Verwendung des MVP -Ansatzes überwunden werden. Der Moderator in MVP enthält alle Geschäftslogik, und diese Klasse ist weit vom Android -Kontext oder von Android -verwandten Abhängigkeiten entfernt, was die Flexibilität für die Textbetriebslogik bietet, indem sie einfach in Testmodulen der Moderator -Klasse verwendet. Android -bezogene Abhängigkeiten erzeugen Komplexität beim Testen. Der Moderator hat keine Android -Abhängigkeit wie Kontext, Ansicht usw. und alle Modellaktualisierungen und Netzwerkanforderungen werden über Moderator durchgeführt. Sobald das Modell aktualisiert wird oder eine Netzwerkanforderung abgeschlossen ist, wird die Ansicht über Präsentanten aktualisiert, indem Rückrufe vom Präsentator angezeigt werden. Kein Modell und keine Netzwerkanforderung können sich direkt an die Ansichten kümmern.
MVVM beinhaltet einen Datenbindungsansatz, um Code kurz zu machen und den Code für die Handhabung von Ansicht aus Java -Klassen zu reduzieren. Ansichtsmodelle sind für die Aktualisierung der Ansicht verantwortlich und sobald ein Ansichtsmodell an eine Ansicht gebunden ist, dann werden Sie über ihre Aktualisierungsereignisse informiert. Wenn ein Modell von einem Benutzer klicken wird, klicken Sie auf, dann senden Sie Rückrufe senden, um das Modell anzuzeigen, das die Ansicht automatisch aktualisiert, da es an die Ansichten gebunden ist. MVVM reduzieren die Codegröße, aber die Implementierung von MVVM ist ziemlich schwierig und es ist schwierig, große Projekte auf der Grundlage von MVVM zu debuggen.


?
Die Wahl einer korrekten Architektur für das Projekt beinhaltet das Verständnis der entwickelten Module. Einige Funktionen eignen sich hervorragend für MVC, andere mit MVP und andere mit MVVM. Es ist ziemlich schwierig, die auf MVVM durchgeführten Projekte zu debuggen, insbesondere für diejenigen, die aufgrund von Datenbindung und Live -Daten keinen Sided Data Flow haben. Wenn eine Anwendung einen kontinuierlichen Datenstrom von einer Quelle empfängt, eine regelmäßige UI-Update benötigt und größtenteils (80–90%) eine Seiten-Kommunikation (z. B. ein elektronisches Geräte, das Protokolle an eine Android-App sendet) wie Solar-Cell-Apps, Wechselrichter -Apps oder die Statusüberwachung eines anderen Geräts, verfügt, kann dies mit MVVM-Apps geeignet sind. Das Debuggen dieser MVVM -Anwendungen kann einfach sein, da ein großer Datenfluss einseitig ist .
MVP ist ein guter Ansatz für das Schreiben von Android -Projekten, wenn wir besorgt sind, die Wirtschaftslogik -WRT -Unit -Tests über Java -Test -Frameworks (nicht Android) zu testen. Da Java -Test -Framework nur Java -Abhängigkeiten auflöst und eine saubere Moderatorschicht frei von Android -bezogenen Abhängigkeiten wie Kontext, SharedPreferences oder anderen Com.android ist. * Paket. Der Nachteil von MVP ist, dass es am Ende 20-25% zusätzlichen Code mit derselben Funktionalität in MVC oder MVVM schreibt. MVP ist gut, wenn Sie wirklich an Testfällen und Einheitenprüfung von Modulen interessiert sind. Für MVP verwenden Java -Testkits einfach eine Instanz des Moderators und führen Sie Testfunktionen aus.
EG: New Moderator (). TestsOMefunction () .
MVC ist in Android weit verbreitet. Google selbst schrieb viele Jahre in MVC Repositories. Jetzt übernimmt Google MVVM für seine Github -Repositorys, da diese Repos kleine und hauptsächlich Stichproben sind. Die MVC -Anwendung kann über Android -Test -Frameworks getestet werden, nicht mit JAVA -spezifischen Testwerkzeugen aufgrund fehlender Abhängigkeiten von com.android. * Pakete im Java -spezifischen Tool.
Beispiel :
Hinweis : Es gibt keine einzige Architektur, die das Beste von allen ist. Wenn es einen gäbe, würde es keine Notwendigkeit geben, andere Architekturen zu lernen. Die Auswahl der korrekten Architektur hängt von mehreren Faktoren wie anfänglichen Anforderungen, Datenfluss, Skalierbarkeit, Wartung, Aktualisierungen (CRS), Testanforderungen ab.
Mit Ausnahme dieser drei Android -Architekturen gibt es eine weitere Architektur, die als "MVI -Modellansichtsabsicht" bezeichnet wird. Dies ist bei Android -Entwicklern nicht sehr beliebt. Bitte überprüfen Sie diesen Link, wenn Sie an MVI interessiert sind.
https://github.com/saksham24/android-imple-mvi-pattern-with-mv-mvm-collaboration