ich hab gerade einen Gedanken im Kopf, wo ich an ein kleines Problemchen komme, wo ich euch mal fragen wollte, ob jemand eine Idee/Tipp hat.
Ich habe folgende Situation: Es existiert eine Instanz von Object A, welches einen Datensatz einer MySQL-Tabelle wiederspiegelt. Dieses Object besitzt z.B. einen Titel.
Dazu gibt es Object B, welches auch eine eigene MySQL-Tabelle darstellt, wo der Titel ebenfalls vorkommt. Nun nicht als Referenz, sondern (neben einer Referenz) auch als direkte Kopie.
Der Grund dafür ist, dass es vermieden werden soll, dass für eine Suche über Tabelle B erst diverse Joins aufgelöstet werden sollen und somit ein Plus für die Performance erzielt werden soll. An diesem Punkt kann ich leider nicht rütteln und muss ihn nun so hinnehmen.
"Problem" ist nun, dass wenn Objekt A seinen Titel geändert kriegt und gespeichert wird dann müsste ebenfalls auch der Titel bei Tabelle B geändert werden, da dieser ja eine direkte Kopie ist.
Wichtig bei dieser Situation ist nun: Es existiert zu diesem Zeitpunkt keine Instanz von Objekt B, welche dazu angesprochen werden könnte.
Ich dachte zuerst, dass es nach dem guten alten Observer Pattern aussieht, jedoch hab ich nun das lustige Problem, dass das übliche Observer Pattern davon ausgeht, dass Observer sowie Subject existieren.
Diesen Zustand kann ich nicht gewährleisten und wollte mir nun eine Logik dafür ausdenken, da ich nicht in Objekt A irgendwelche Logik reinpacken will, welche eigentlich zu Objekt B gehört.
Hatte zuerst daran gedacht, ob vielleicht drei Objekte nötig sind. Objekt A, Objekt B und praktisch der Observer. Wenn Objekt A ein Event auslöst, dann werden die nötigen Daten an den Observer übergeben. Der Observer kann jedoch nicht direkt Objekt B sein, da dieses ja nicht existiert. Somit müsste der Observer nun entsprechende Logik enthalten. Persönlich tue ich mich nun aber schwer, wenn der Observer nun eine Instanz von Objekt B erzeugen müsste, da ich ggf. befürchte, dass ich dadurch gewisse Freiheiten verliere und die Objekte zu stark binden muss.
Daher suche sich nun eine Idee und hoffe, dass ihr mir vielleicht helfen könntet. Dieses Beispiel ist absichtlich ohne jede Sprache, da die Umsetzung wohl nicht in Python passieren wird. Daher ist das Ganze etwas abstrakter
