[...]
-
[...]
-
Elementus schrieb:
Die Datenklasse braucht den Befehlsheader, weil sonst nicht die inject- und ausführen-Methode bekannt ist.
Nicht die Klassendefinition braucht den Header, sondern nur die Implementierung der Funktionen, in denen die Methoden aufgerufen werden.
Die Befehsklasse braucht den Datenheader, weil ja die übergebene Referenz zwischengespeichert werden soll, damit diese dann in der ausführen-Methode() der konkreten Implementierungen bereitstehen muss.
Für eine Referenz reicht eine forward declaration.
Ich könnte die Befehle ja auch direkt als Methoden in der Datenklasse umsetzen, dann fehlt aber die Erweiterbarkeit.
Du findest es einfacher und flexibler, für neue Funktionalität, diese in eine Klasse mit genau vorgegebener Schnittstelle zu pressen und deren Header überall an den benötigten Stellen einzubinden, anstatt einfach eine neue Methode zu definieren?
Wenn es wichtig ist, dass der Befehl in einem Objekt gespeichert ist (etwa weil der Befehl einen internen Zustand hat, der über mehrere aufrufende Objekte erhalten bleiben soll - deine Beschreibung klingt aber nicht danach), dann ist deine Idee schon ganz gut. Stichwort "visitor pattern".
-
[...]