Ist das ein Designpattern?
-
Hallo,
ich habe eine Basisklasse A, von der B und C abgeleitet sind. Nun habe ich eine Klasse Foo, mit folgender Struktur:
class Foo { public: A* a; B* b; C* c; void bar() { a->bar(); } };Innerhalb von Foo allokiere ich ein B und C Objekt (die logischerweise von b und c referenziert werden). Foo bietet eine Methode an um zu bestimmen, worauf der Zeiger a zeigt (auf b oder c). Die Methode bar() von Foo() ruft dann immer die passende Methode auf, abhängig davon worauf a gerade zeigt.
Meine dazu simple Frage: Ist dieses Konstrukt zufällig einem Design Pattern ähnlich?
-
ja, mehrere sogar. da kommt es aber darauf an, was du vorhast. (Strategy? State?)
andere frage: B und C scheinen von A abgeleitet zu sein (?), warum also extra referenzen auf ein B und C objekt speichern?
-
queer_boy schrieb:
ja, mehrere sogar. da kommt es aber darauf an, was du vorhast. (Strategy? State?)
Hm, das Strategy Pattern ist in der Tat sehr ähnlich zu meinem Konstrukt.
queer_boy schrieb:
andere frage: B und C scheinen von A abgeleitet zu sein (?), warum also extra referenzen auf ein B und C objekt speichern?
Ja, B und C sind Subklassen von A. Die extra Referenzen habe ich, weil B und C noch einiges mehr können und die Initialisierung recht aufwändig ist (ich will also nur ein einziges new machen und dann nie wieder). Über Foo kann man dann die Attribute von b und c ändern und mittels Foo::bar() immer das bar() der gerade "aktiven" Klasse (sprich das, auf was a zeigt) aufrufen.