einfache Datenstruktur auf komplexere abbilden
-
Servus,
ich habe zur Zeit den folgenden Anwendungsfall:
Eine aus 5 Klassen bestehende hierarchische Datenstruktur (bspw. Planet -> Kontinent -> Land -> Stadt -> Straße), die also wie ein Baum aufgebaut ist, soll so implementiert werden, daß die einzelnen Kindobjekte ihre Elternobjekte NICHT kennen.
Nun soll aber ein anderer Teil des Programms doch hin und wieder mal von einem Objekt auf dessen Elternteil zugreifen können. Aber innerhalb der eigentlichen Datenstruktur darf die Elterninformation wie gesagt NICHT gespeichert werden.Nun habe ich einfach zu der Klasse, wo die Elternobjekte benötigt werden, eine einfache Node-Klasse definiert, die ganz simpel das eigentliche Element, den Eltern-Node und dann noch die Unter-Nodes speichert. Somit wird quasi der eigentliche Baum hier nochmals nachgebildet (Speicherverbrauch usw. ist hierbei zu vernachlässigen), sodaß die Klasse, die durchnavigieren will, den vollen Komfort hat.
Das funktioniert auch ganz gut, aber es wird etwas ekelig wenn sich im Originalbaum etwas ändert. Denn dann muß ja der Rest sofort angepaßt werden, und da habe ich mich bisher noch gar nicht dran rangewagt, da ich vorher hier fragen möchte, ob es für solcherlei Anwendungsfälle vielleicht eine Art Design-Pattern gibt. Grundsätzlich arbeitet mein "zweiter Baum" ja ungefähr wie das Composite-Pattern: vorhandenen Objekten wird zusätzliche Funktionalität verliehen, indem sie anderen Objekten hinzugefügt wird. Aber gibt es evtl. speziell für Collections/Datenstrukturen irgendwie eine allgemeine Vorgehensweise?
Oder gibt es für meine Zwecke eine möglicherweise bessere Lösung? Wie würdet ihr da vorgehen (nur nochmal zur Erinnerung: daß die Originalstruktur die Elterninformationen nicht speichert, ist wirklich sowas wie eine Grundvoraussetzung)?
Ich hoffe, ihr könnt mir weiterhelfen!