Update November 2018
Nachdem ich einige Jahre über MVC und MVP in Android gearbeitet und gebloggt hatte (siehe Antwort unten), beschloss ich, mein Wissen und Verständnis in einer umfassenderen und leicht verdaulichen Form zu erfassen.
Also habe ich einen vollständigen Videokurs über die Architektur von Android-Anwendungen veröffentlicht. Wenn Sie also die fortschrittlichsten Architekturmuster in der Android-Entwicklung beherrschen möchten, lesen Sie diesen umfassenden Kurs hier .
Diese Antwort wurde aktualisiert, um ab November 2016 relevant zu bleiben
Es sieht so aus, als würden Sie eher nach Architekturmustern als nach Entwurfsmustern suchen .
Entwurfsmuster zielen darauf ab, einen allgemeinen "Trick" zu beschreiben, den der Programmierer zur Behandlung eines bestimmten Satzes wiederkehrender Softwareaufgaben implementieren kann. Beispiel: In OOP kann das Beobachterentwurfsmuster verwendet werden , wenn ein Objekt eine Reihe anderer Objekte über bestimmte Ereignisse benachrichtigen muss.
Da Android-Anwendungen (und die meisten AOSP-Anwendungen) in Java geschrieben sind, das objektorientiert ist, fällt es Ihnen wahrscheinlich schwer, nach einem einzigen OOP-Entwurfsmuster zu suchen, das unter Android NICHT verwendet wird.
Architekturmuster hingegen adressieren keine bestimmten Softwareaufgaben - sie zielen darauf ab, Vorlagen für die Softwareorganisation basierend auf den Anwendungsfällen der betreffenden Softwarekomponente bereitzustellen .
Es klingt ein bisschen kompliziert, aber ich hoffe, ein Beispiel wird klarstellen: Wenn eine Anwendung verwendet wird, um Daten von einem Remote-Server abzurufen und dem Benutzer strukturiert zu präsentieren, ist MVC möglicherweise ein guter Kandidat für eine Prüfung. Beachten Sie, dass ich nichts über Softwareaufgaben und den Programmablauf der Anwendung gesagt habe - ich habe es nur aus Anwendersicht beschrieben, und es ist ein Kandidat für ein Architekturmuster aufgetaucht.
Da Sie MVC in Ihrer Frage erwähnt haben, würde ich vermuten, dass Sie nach Architekturmustern suchen.
In der Vergangenheit gab es keine offiziellen Richtlinien von Google zu den Architekturen von Anwendungen, was (unter anderem) zu einem völligen Durcheinander im Quellcode von Android-Apps führte. Tatsächlich folgen die meisten Anwendungen, die ich sehe, auch heute noch nicht den Best Practices von OOP und zeigen keine klare logische Organisation des Codes.
Heute ist die Situation jedoch anders: Google hat kürzlich die Datenbindungsbibliothek veröffentlicht , die vollständig in Android Studio integriert ist, und sogar eine Reihe von Architekturentwürfen für Android-Anwendungen eingeführt .
Vor zwei Jahren war es sehr schwierig, Informationen über MVC oder MVP auf Android zu finden. Heute sind MVC, MVP und MVVM in der Android-Community zu "Modewörtern" geworden, und wir sind von unzähligen Experten umgeben, die ständig versuchen, uns davon zu überzeugen, dass MVx besser ist als MVy. Meiner Meinung nach ist es völlig sinnlos zu diskutieren, ob MVx besser als MVy ist, da die Begriffe selbst sehr vieldeutig sind. Schauen Sie sich einfach die Antworten auf diese Frage an und Sie werden feststellen, dass verschiedene Personen diese Abkürzungen mit völlig unterschiedlichen Konstrukten assoziieren können.
Aufgrund der Tatsache, dass offiziell nach einem besten Architekturmuster für Android gesucht wurde, werden meiner Meinung nach weitere Ideen zutage treten. Zu diesem Zeitpunkt ist es wirklich unmöglich vorherzusagen, welches Muster (oder welche Muster) in Zukunft zu Industriestandards werden wird - wir müssen abwarten (ich denke, es ist eine Frage von ein oder zwei Jahren).
Es gibt jedoch eine Vorhersage, die ich mit einem hohen Maß an Sicherheit treffen kann: Die Verwendung der Datenbindungsbibliothek wird nicht zum Industriestandard. Ich bin zuversichtlich, dies zu sagen, da die Datenbindungsbibliothek (in ihrer aktuellen Implementierung) kurzfristige Produktivitätssteigerungen und eine Art Architekturrichtlinie bietet, aber den Code auf lange Sicht nicht wartbar macht. Sobald Langzeiteffekte dieser Bibliothek auftauchen, wird sie aufgegeben.
Obwohl wir heute offizielle Richtlinien und Tools haben, denke ich persönlich nicht, dass diese Richtlinien und Tools die besten verfügbaren Optionen sind (und sie sind definitiv nicht die einzigen). In meinen Anwendungen verwende ich meine eigene Implementierung einer MVC-Architektur. Es ist einfach, sauber, lesbar und testbar und erfordert keine zusätzlichen Bibliotheken.
Diese MVC unterscheidet sich nicht nur kosmetisch von anderen - sie basiert auf der Theorie, dass Aktivitäten in Android keine UI-Elemente sind , was enorme Auswirkungen auf die Code-Organisation hat.
Wenn Sie also nach einem guten Architekturmuster für Android-Anwendungen suchen , das den SOLID- Prinzipien folgt , finden Sie in meinem Beitrag eine Beschreibung zu MVC- und MVP-Architekturmustern in Android .