Ist es möglich, das Model-View-Controller-Muster in Java für Android zu implementieren?
Oder ist es bereits durch Aktivitäten implementiert? Oder gibt es einen besseren Weg, das MVC-Muster für Android zu implementieren?
Ist es möglich, das Model-View-Controller-Muster in Java für Android zu implementieren?
Oder ist es bereits durch Aktivitäten implementiert? Oder gibt es einen besseren Weg, das MVC-Muster für Android zu implementieren?
Auch wenn dieser Beitrag alt zu sein scheint, möchte ich gerne die folgenden beiden hinzufügen, um über die aktuellen Entwicklungen in diesem Bereich für Android zu informieren:
android-binding - Bietet ein Framework, das das Binden von Android-View-Widgets an Datenmodelle ermöglicht. Es hilft bei der Implementierung von MVC- oder MVVM-Mustern in Android-Anwendungen.
roboguice - RoboGuice nimmt Ihnen das Rätselraten bei der Entwicklung ab. Injizieren Sie Ihre Ansicht, Ressource, Systemdienst oder jedes andere Objekt und lassen Sie RoboGuice die Details übernehmen.
Beschreibung:
Das MVC-Muster ist im Wesentlichen folgendes:
Wichtige Funktion des MVC: Wir können entweder das Modell oder die Ansicht oder den Controller ändern, ohne die anderen zu beeinträchtigen
Das MVC-Muster von Android wird (zum Teil) mit ihren Adapter-Klassen implementiert. Sie ersetzen einen Controller durch einen "Adapter". Die Beschreibung für den Adapter lautet:
Ein Adapterobjekt dient als Brücke zwischen einer AdapterView und den zugrunde liegenden Daten für diese Ansicht.
Ich beschäftige mich gerade mit einer Android-Anwendung, die Daten aus einer Datenbank liest. Daher weiß ich noch nicht, wie gut es funktioniert. Es scheint jedoch ein wenig wie die Model-View-Delegate-Architektur von Qt zu sein, von der behauptet wird, dass sie einen Schritt weiter als das traditionelle MVC-Muster ist. Zumindest auf dem PC funktioniert das Muster von Qt ziemlich gut.
Es war überraschend zu sehen, dass keiner der Beiträge hier die Frage beantwortet hat. Sie sind entweder zu allgemein, vage, inkorrekt oder gehen nicht auf die Implementierung in Android ein.
In MVC weiß die View-Schicht nur, wie sie die Benutzeroberfläche (UI) anzeigen soll. Wenn Daten benötigt werden, werden sie aus der Model-Schicht abgerufen. Die View fragt jedoch NICHT direkt beim Model nach den Daten, sondern über den Controller. Der Controller ruft also das Model auf, um die erforderlichen Daten für die View bereitzustellen. Sobald die Daten bereit sind, informiert der Controller die View, dass die Daten aus dem Model abgerufen werden können. Jetzt kann die View die Daten aus dem Model erhalten.
Dieser Ablauf kann wie folgt zusammengefasst werden:
Es sei darauf hingewiesen, dass die View über die Verfügbarkeit der Daten im Model entweder durch den Controller -- auch bekannt als Passive MVC -- oder durch Beobachten der Daten im Model durch Registrierung von Beobachtern informiert werden kann, was Active MVC genannt wird.
Was die Implementierung betrifft, liegt eine der ersten Fragen auf der Hand: Welches Android-Komponent sollte für die View verwendet werden? Activity
oder Fragment
?
Die Antwort ist, dass es keine Rolle spielt und beide verwendet werden können. Die View sollte in der Lage sein, die Benutzeroberfläche (UI) auf dem Gerät darzustellen und auf die Interaktion des Benutzers mit der UI zu reagieren. Sowohl Activity
als auch Fragment
stellen die erforderlichen Methoden dafür bereit.
In der Beispiel-App, die in diesem Artikel verwendet wurde, habe ich Activity
für die View-Schicht verwendet, aber auch Fragment
kann genutzt werden.
Die vollständige Beispiel-App finden Sie im 'mvc'-Zweig meines GitHub-Repositorys hier.
Ich habe auch die Vor- und Nachteile der MVC-Architektur in Android anhand eines Beispiels in diesem Artikel behandelt.
Für Interessierte habe ich eine Artikelserie zur Android-App-Architektur gestartet, die hier beginnt und in der ich die verschiedenen Architekturen wie MVC, MVP, MVVM für die Entwicklung von Android-Apps anhand einer voll funktionsfähigen App vergleiche.
Ich habe einen Architekturkurs besucht, in dem der Dozent behauptet hat, dass Activities und Fragments nicht als Ansichten verwendet werden sollten und tatsächlich Controller sein sollten und Ansichten separate Dateien sein sollten. Haben Sie eine Meinung oder einen Grund, warum das nicht der Fall sein sollte?
Ich glaube nicht, dass der Dozent damit genau liegt. Die Auswahl der Aktivität oder des Fragments als Controller bedeutet, dass der Kontext an den Controller übergeben wird. Auf der anderen Seite benötigt die Ansicht auch einen Kontext zum Zeichnen auf dem Bildschirm. Auf diese Weise, d.h. den Kontext an den Controller zu übergeben, wird die App anfällig für Speicherlecks, und ich glaube, der Controller sollte keinen Zustand tragen.
Ich denke, die nützlichste vereinfachte Erklärung findest du hier: http://www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf
Alles andere, was ich hier gesehen und gelesen habe, zeigt, dass die Implementierung all dieser Dinge schwieriger macht und nicht gut zu anderen Teilen von Android passt.
Es ist bereits der Standardweg in Android, dass eine Aktivität andere Listener implementiert. Der harmloseste Weg wäre, den Java Observer hinzuzufügen, wie es in den Folien beschrieben ist, und die onClick und andere Arten von Aktionen in Funktionen zu gruppieren, die immer noch in der Aktivität sind.
Der Android-Weg ist, dass die Aktivität beides tut. Sich dagegen zu wehren, macht es nicht wirklich einfacher, die Erweiterung oder zukünftige Kodierung durchzuführen.
Ich stimme mit dem 2. Beitrag überein. Es ist irgendwie schon implementiert, nur nicht auf die Art und Weise, wie die Leute es gewohnt sind. Ob es sich im gleichen Datei befindet oder nicht, gibt es bereits eine Trennung. Es ist nicht nötig, zusätzliche Trennung zu schaffen, um es in andere Sprachen und Betriebssysteme einzufügen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
64 Stimmen
Deine Frage ist sehr gut. Aber die als Lösung markierte Antwort ist meiner Meinung nach nicht korrekt. Sie könnte mehrere Personen in die Irre führen.
4 Stimmen
Überprüfe meine 2 Beiträge hier Android-Architektur: MV?
1 Stimmen
Auch gibt es zusätzliche Regeln, die beachtet werden müssen, um sich an das MVC-Modell zu halten, oder ist die Android-Entwicklung aufgrund von Aktivität, XML und Ressourcen bereits auf MVC zugeschnitten?
3 Stimmen
@Dori , Ich habe deinen Link repariert: Android Architecture: MV?
0 Stimmen
Dieser Artikel entspricht genau dem, wonach Sie suchen, MVC in Android anhand eines praktischen Beispiels: digigene.com/architecture/android-architecture-part-2-mvc
0 Stimmen
Die Entwicklung von Android-Apps ähnelt fast dem MVC-Modell, wenn man mit Android Studio arbeitet.