Hallo zusammen,
Ich habe folgende Objekte, die alle von einem gemeinsamen Grundobjekt erben:
Entity, State, Action, EntitySet, View
- Entity kann andere Entities, States, und Actions aufnehmen
- EntitySet kann Entities und EntitySets aufnehmen
- View kann States aufnehmen
Wie bekomm ich das in eine sinnvolle Struktur, ohne dass ich Sachen zweimal implementieren muss?
Mit Vererbung komm ich hier nicht weit.
Folgende Lösungen fallen mir ein:
Ich definiere einen ObjectContainer, der als Container für das BaseObject fungiert. Nachteil: Ich muss ständig casten, und kann auch nicht verhindern, dass jemand Unfug treibt
Oder ich definiere Container: EntityContainer, StateContainer, ActionContainer, EntitySetContainer.
Diese Container könnte man als Komponenten der Hauptklassen einsetzen. Die Hauptklasse selbst implementiert ebenfalls die benötigten Schnittstellen, leitet die Aufrufe dann aber an die Komponente weiter.
Diese Version gefällt mir grade ganz gut... das hätte dann was von einem Decorator...
Sonstige Ideen?
Danke und lg
Chris
Ich habe folgende Objekte, die alle von einem gemeinsamen Grundobjekt erben:
Entity, State, Action, EntitySet, View
- Entity kann andere Entities, States, und Actions aufnehmen
- EntitySet kann Entities und EntitySets aufnehmen
- View kann States aufnehmen
Wie bekomm ich das in eine sinnvolle Struktur, ohne dass ich Sachen zweimal implementieren muss?
Mit Vererbung komm ich hier nicht weit.
Folgende Lösungen fallen mir ein:
Ich definiere einen ObjectContainer, der als Container für das BaseObject fungiert. Nachteil: Ich muss ständig casten, und kann auch nicht verhindern, dass jemand Unfug treibt
Oder ich definiere Container: EntityContainer, StateContainer, ActionContainer, EntitySetContainer.
Diese Container könnte man als Komponenten der Hauptklassen einsetzen. Die Hauptklasse selbst implementiert ebenfalls die benötigten Schnittstellen, leitet die Aufrufe dann aber an die Komponente weiter.
Diese Version gefällt mir grade ganz gut... das hätte dann was von einem Decorator...
Sonstige Ideen?
Danke und lg
Chris