Sollte eine Aktivität direkten Zugriff auf die SQLite-Datenbank haben oder sollte eine Mediatorklasse vorhanden sein?

StackOverflow https://stackoverflow.com//questions/9674929

Frage

Ich habe subklassiger SQLiteOpenHelper und verfügen über alle Komponenten des verwendeten Codes. Die Frage ist, dass es sich um ein wirklich gutes Design handelt, damit jede Aktivität den direkten Zugriff auf öffentliche Methoden in der Hauptdatenbankklasse hat.

Ich habe eine Situation, in der meine Tätigkeit Informationen in ihren Layouts basieren, basierend auf den, welche Informationen, die es aus der Datenbank erhält, im Wesentlichen dynamisch zur Laufzeit erstellt wird. Da ich mehrere Zeilen haben, die aus der Datenbank zurückkommen, das bedeutet, dass ich ein Array von was auch immer ich brauche, um alle Informationen zu erhalten.

so etwas so:

generasacodicetagpre.

Meine Tätigkeit benötigt diese "struct" als seine eigene - so dass er die Informationen aus der Datenbank erhalten kann - so etwas wie GetAllmenuitems (), - wenn diese Methode eine SELECT-Anweisung ausführen würde, werden Informationen zusammengestellt. und geben Sie es zurück an die Hauptaktivität zurück. Verwenden Sie diese Informationen innerhalb der Aktivität, um die Layouts / Ansichten usw. zu erstellen, usw.

Wenn ich am Ende ein Mediator-Kurs haben würde, um mit der Datenbank zu sprechen, würde diese Klasse auch dieselbe "Struktur" benötigen, die darin definiert ist. Wäre es besseres Design, etwas zu haben wie:

MainActivity

datitabaseaccessor - ruft öffentliche Datenbankhelper-Klassen an (pro Anfrage aus der MainActivity)

Datenbankhelper (Unterklassen SQLiteOpenHelper, führt alle Datenbankabfragen aus)

Ich würde gerne etwas entlang der Linien von MVC (Modell-View-Controller) entwerfen, aber ich habe mich gefragt, was Sie an die Praktikabilität in einer Android-Anwendung dachten.

danke!

War es hilfreich?

Lösung

Im Allgemeinen ist es eine gute Idee, die Aktivität und die Datenbank wie möglich voneinander entkoppelt zu machen.Auf diese Weise können Sie die Datenquelle ändern können, indem Sie eine Klasse erstellen, um darauf zuzugreifen, ohne den Code zu ändern, den Sie verwenden, um die Daten zu präsentieren.

Ja, ja, ich würde unbedingt eine separate Klasse für den Zugriff auf die Daten und eine separate Klasse haben, um die Daten an die Aktivität zu leiten.Ich würde auch dem Gesetz des Demeter-Gesetzes in diesem Fall folgen und die erforderlichen Funktionen bereitstellen, die zum Zugriff oder Ändern der zugrunde liegenden Daten erforderlich sind, ohne tatsächlich den Zugriff auf die zugrunde liegende Datenbank bereitzustellen.

Andere Tipps

Zum Abschluss - Denken Sie, dass die Datenbank, die von der GUI getrennt ist, ein intelligenter Schritt ist, falls ich die DB-Klasse erneut mit jeder anderen Aktivität verwenden möchte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top