Ist es möglich, das Model-View-Controller-Muster in Java für Android zu implementieren?
Oder ist sie bereits durch Aktivitäten umgesetzt? Oder gibt es eine bessere Möglichkeit, 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 sie bereits durch Aktivitäten umgesetzt? Oder gibt es eine bessere Möglichkeit, das MVC-Muster für Android zu implementieren?
In Android gibt es zwar kein MVC, aber dafür Folgendes:
Es gibt kein allgemeingültiges MVC-Muster. MVC ist eher ein Konzept als ein solider Programmierrahmen. Sie können Ihr eigenes MVC auf jeder Plattform implementieren. Solange Sie sich an die folgende Grundidee halten, implementieren Sie MVC:
Betrachten Sie es auch so: Wenn Sie Ihr Modell programmieren, sollte sich das Modell nicht um das Rendering (oder plattformspezifischen Code) kümmern müssen. Das Modell würde zur Ansicht sagen: "Es ist mir egal, ob dein Rendering Android oder iOS oder Windows Phone ist, das ist, was ich brauche, um zu rendern. Die Ansicht würde nur den plattformspezifischen Rendering-Code behandeln.
Dies ist besonders nützlich, wenn Sie Mono das Modell gemeinsam zu nutzen, um plattformübergreifende Anwendungen zu entwickeln.
Die Aktionen, Ansichten und Aktivitäten auf Android sind die eingebaute Art und Weise, mit der Android-Benutzeroberfläche zu arbeiten und sind eine Implementierung der Model-View-Viewmodel (MVVM) Muster die strukturell ähnlich (in der gleichen Familie wie) model-view-controller ist.
Meines Wissens gibt es keine Möglichkeit, aus diesem Modell auszubrechen. Es kann wahrscheinlich getan werden, aber Sie würden wahrscheinlich alle Vorteile des bestehenden Modells verlieren und müssen Ihre eigene UI-Schicht neu schreiben, damit es funktioniert.
Nach einigem Suchen ist die vernünftigste Antwort die folgende:
MVC ist in Android bereits implementiert als:
Button
abgeleitet von android.view.View
.(Dies impliziert übrigens keine Anwendungslogik in der Aktivität).
Das Vernünftigste für einen kleinen Entwickler ist es, diesem Muster zu folgen und nicht zu versuchen, das zu tun, was Google beschlossen hat, nicht zu tun.
PS Beachten Sie, dass die Aktivität manchmal neu gestartet wird und daher kein Platz für Modelldaten ist (der einfachste Weg, einen Neustart auszulösen, ist das Weglassen von android:configChanges="keyboardHidden|orientation"
aus dem XML und drehen Sie Ihr Gerät).
EDIT
Wir können über Folgendes sprechen MVC aber es wird so sein, dass FMVC , Rahmenwerk--Modell--Ansicht--Steuerung . Die Rahmenwerk (das Android-Betriebssystem) setzt seine Vorstellung vom Lebenszyklus von Komponenten und den damit verbundenen Ereignissen durch, und in der Praxis wird die Controller ( Activity
/ Service
/ BroadcastReceiver
) ist in erster Linie verantwortlich für die Bewältigung dieser Rahmenwerk -Ereignisse (wie onCreate() ). Sollten Benutzereingaben getrennt verarbeitet werden? Selbst wenn dies der Fall sein sollte, können Sie es nicht trennen, da die Benutzereingabe-Ereignisse auch von Android kommen.
Je weniger Code, der nicht Android-spezifisch ist, Sie in Ihre Activity
/ Service
/ BroadcastReceiver
desto besser.
Es gibt kein einzelnes MVC-Muster, an das man sich halten könnte. MVC besagt nur mehr oder weniger, dass man Daten und Ansicht nicht vermischen sollte, so dass z.B. Ansichten für das Halten von Daten verantwortlich sind oder Klassen, die Daten verarbeiten, direkt auf die Ansicht einwirken.
Aber nichtsdestotrotz, so wie Android mit Klassen und Ressourcen umgeht, ist man manchmal sogar gezwungen, dem MVC-Muster zu folgen. Komplizierter sind meiner Meinung nach die Activities, die manchmal für die View verantwortlich sind, aber trotzdem gleichzeitig als Controller fungieren.
Wenn Sie Ihre Views und Layouts in den XML-Dateien definieren, Ihre Ressourcen aus dem res-Ordner laden und es mehr oder weniger vermeiden, diese Dinge in Ihrem Code zu vermischen, dann folgen Sie ohnehin einem MVC-Muster.
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.