Sind SharedPreferences das Model in einer MVC Architektur?

1 Antwort

Ich habe noch nicht direkt mit dem MVC Pattern gearbeitet. Habe mich dazu damit im Bereich Android eingelesen.

Ich würde die Ansteuerung vom SharedPreferences in die Model Klasse packen bzw. dort die SharedPreferences Helfer Klasse aufrufen.

Mit SharedPreferences kann man Key Value Paare speichern, welche auch über ein App Start hinaus gespeichert werden. Es ist also eine Art von Datenspeicherung. Die Controller Klasse ist dafür da, Werte zu speichern und zu verwalten.

Ohne SharedPreferences würde man die Werte vom Model in Variablen ablegen. Mit SharedPreferences sind es dann eben versteckte Variablen, welche man über Getter und Setter Methoden bekommt.

Ein kleines Beispiel mit einem Button, der z.B. ein boolean Variable auf true setzt.

Der Button wird im View (XML Datei) mit einer ID definiert. In der Activity Klasse (Controller) hast du dann ein onClick Listener für den Button.

In der Model Klasse hast du dann eine set(Wert) bzw. setTrue() Funktion, welche den Code zum Beschreiben des SharedPreference Attribut enthält bzw. extern ausführt (z.B. Helfer Klasse). Diese set() Funktion wird vom Button onClickListener ausgeführt.

Der Controller bekommt dann über das Obserable mit, dass es eine Änderung gab, sodass der Controller die get() Funktion vom Model aufruft. In der Model get() Funktion ist der SharedPreferences Code enthalten bzw. wird abgerufen. Die abgerufene Änderung wird dann im View angezeigt.

Ich hätte die SharedPreferences noch in eine Helfer Klasse verschoben, dass du die Werte im Model durch einen einzelnen Abruf lesen und schreiben kannst. Die Helper Klasse könntest du in einen separaten Unterodner abspeichern.

Bin kein Experte bei MVC, aber so hätte ich es gemacht.