Verhalten einer Klasse modularisieren

videlius

Grünschnabel
Hallo,

ich bräuchte nur mal einen Denkanstoß oder viell. nur das richtige Stichwort.

Ich habe ein klassisches Jump'n'Run Spiel programmiert. Mit einer Figur die laufen, springen, klettern, etc. kann.

Die Fähigkeiten sind in der Klasse, ich nenne sie mal "Spielfigur" alle implementiert.
Jetzt habe ich mir im Zuge meines Refactoring überlegt die Fähigkeiten als eigene Klassen zu nehmen und diese als Art "Module" der Klasse Spielfigur zu übergeben. Diese kann ihre Fähigkeiten viell. in einer Liste "skills" verwalten. Das hat den Vorteil das ich diese Fähigkeiten bei Gegnern wiederverwenden könnte.

Am besten, wäre natürlich, dass die Klasse Spielfigur die Methoden ihrer "Module" als ihre eigenen ansieht. Ich denke das geht so in Richtung Plugins.

Gibt es da viell. irgendwelche bekannten Lösungsansätze, evt. Design-Pattern?

Also ich brauche keine Komplettlösung über ein Schupps in die richtige Richtung wäre ich sehr dankbar.

Danke!
 
Hallo,

also das Entwurfsmuster, das dir weiterhelfen könnte, wäre der "Dekorierer". Bei diesem Entwurfsmuster kannst du deine Spielfigur bzw. allgemein Spielfiguren mit unterschiedlichen Varianten von unterschiedlichen Eigenschaften dekorieren.

Du kannst dich ja mal darüber informieren. Verwende evtl. Wikipedia als Einstrieg.

Falls du noch Fragen hast, dann melde dich.

Gruß
 
Zuletzt bearbeitet:
Mit dem Decorator-Pattern habe ich mich schon beschäftigt. Da hab ich aber das Problem, dass ich nicht mehr an die Methoden der zu dekorierenden Klasse herankomme wenn ich diese Klasse mit einem Decorator versehe.
Ich habe beispielsweise eine Methode in der zu dekorierenden Klasse "drawObject()" die direkt aufgerufen werden muss. Ist die Klasse mit einem Decorator versehen, komme ich aber nur noch an die Methoden heran, die im Decorator-Interface definiert sind. Alle anderen Methoden sind quasi vom Decorator "verdeckt".
 
Zurück