Thread Modell für Account richtig aufbauen (1 answers)
Opened by Martin at 2011-11-09 18:02

Gast Martin
 2011-11-09 18:02
#154072 #154072
Hallo,

ich habe einen leichten Knoten im Hirn. Eigentlich ist der Sachverhalt kein allzu schwieriger, aber ich kriege das Modell einfach nicht vernünftig hin.
Die Applikation orientiert sich an MVC. Es gibt die Klasse Model/Account.
Ein Account hat zwei unterschiedliche Datenquellen. Einmal eine lokale Datenbank und einmal ein entferntes Interface (z.B. Webservice). Ein Account ist an je ein Interface angebunden, aber es gibt drei verschiedene Interfacetypen.
OO-Framework ist Moose, aber das sollte eigentlich nebensächlich sein.
Model/Account hält nun zwei Objekte als Attribut:
A: Model/Database/Account
B: Model/Interface/Account (a) oder Model/Interface/Typ/Account (b)

Mein Problem ist nun, dass ich nicht wirklich weiß, was für das zweite Attribut richtig/sinnvoll wäre. Der Controller soll sich nicht mit dem Modell rumschlagen müssen. Das heißt, die dort aufgerufenen Methoden sollen unabhängig vom Interfacetyp sein.
Die Interfaces haben teilw. unterschiedliche Fähigkeiten, aber es ist davon auszugehen, dass nur tatsächlich existierende Methoden ausgeführt werden. Die Interfaces sind ähnlich, basieren also auf gleicher Quelle.
Eine kleine zusätzliche Unsauberkeit ist, dass (B) eine Referenz auf (A) braucht, weil es von dort Daten für die Kommunikation mit dem Interface benötigt.

Meine bisherige Abwägung/aufgetretene Schwierigkeiten:
Variante (a):
o Model/Interface/Account hält ein Objekt Model/Interface/Typ/Account
+ Für Model/Account ist alles einfach, die Typbestimmung ist Sache des Interface
- Model/Interface/Account braucht Wrappermethoden für alle Methoden der unterschiedlichen Interface-Typen
- Daten, die ich in Model/Interface/Account habe, müsste ich an Model/Interface/Typ/Account weitergeben
- umgekehrt auch Daten wieder zurückliefen

Variante (b):
o Vorteile/Nachteile umgekehrt wie oben
+ wahrscheinlich die sauberere
- ich weiß nicht, wie ich das sinnvoll initiiere. Model::Interface::Account->new sollte nach Möglichkeit doch nicht Model/Interface/Typ/Account zurückgeben?
- das Objekt Model/Interface/Typ/Account kann eigentlich erst gebaut werden, wenn der Typ gesetzt wurde und die Referenz auf Model/Database/Account da ist
- Bei der Vererbung stoße ich auf Schwierigkeiten, wenn BUILD/new einen anderen Typ zurückgibt. Moose für den BUILD Prozess über den gesamten Vererbungsbaum durch (oben beginnend).

Ich würde mich sehr über Hilfe freuen, habe das jetzt schon fünf mal hin und wieder hergestrickt, weil ich immer wieder auf andere Schwierigkeiten stoße. Evtl. gibt es dafür auch ein gutes Pattern oder das ganze ist über eine abstrakte Klasse oder ein Interface sinnvoll zu machen.

Vielen Dank
Martin
Last edited: 2011-11-09 18:05:51 +0100 (CET)

View full thread Modell für Account richtig aufbauen