000
01.04.2005, 16:37 Uhr
Th
|
Hi, ihr Gurus.
Ich habe eine Basisklasse, von der viele Klassen abgeleitet sind. Nun möchte ich den Klassen zusätzliche Funktionalität geben. Jedoch sind diese Klassen nicht von mir geschrieben, sondern aufgrund der Projekthierarchie kann und will ich diese Klassen nicht verändern.
C++: |
// Basisklasse class CBaseSpaceObject {
};
// abgeleitete Klassen
class CHunter : public CBaseSpaceObject { }
class CPlanet : public CBaseSpaceObject { }
// ... und noch ca 20 weitere
|
Diese Klassen sind zwar mit einem enum versehen (SPACE_HUNTER, SPACE_PLANET, ...) und bisher habe ich meistens ein Array angelegt, um z.B. die (lokalisierten) Namen dieser Objekte aus der StringRessource zu lesen, also
C++: |
const char *cID[CBaseSpaceObject::SPACE_MAX_OBJECTS] = { "ID_SPACEOBJ_HUNTER", "ID_SPACEOBJ_PLANET", ... }
|
Jedoch wenn sich die enums ändern, gibt es Chaos und ich muß diese Daten immer von Hand aktualisieren.
Mir wäre es jedoch lieber, es gäbe hierfür einen objektorientierten Ansatz. Ich hatte schon an eine Factory-Klasse gedacht, welche für jede Klasse eine neue Klasse generiert, in der ich dann die neuen Funktionalitäten hinzufüge.
Welchen Ansatz haltet ihr für geeignetesten? |