Da wir den Code und dein Projekt nicht kennen können wir nur ins Blaue raten. Ist bestimmt klug so wie es ist
Was die einzelnen Ableitungen deiner Klasse angeht, dass kann man pauschal auch nicht sagen. So gibt es halt verschiedene Möglichkeiten. Ableiten würde ich nur wenn du wirklich die Klasse spezialisieren musst. Es ist nicht besonders schön Dinge wie folgendes zu schreiben:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
void Tower::DoAnything()
{
switch(type)
{
case type1:
// ...
break;
case type2:
// ...
break;
/ ...
}
}
|
Dadurch pumpst du deinen Code langsam auf und das wird unschön. Solange die Türme sich nur durch Werte unterscheiden musst du nicht genauer spezialisieren. Wenn die Türme sich zum Beispiel nur durch ihre Attacken unterscheiden, so kannst du theoretisch gut das
Strategy-Pattern anwenden. So kannst du verschiedene Türme mit gleichen Attacken durch die selben Klassen abbilden. In Verbindung dazu bietet sich oft eine Factory an um die jeweiligen Klassen zu erstellen. In deinem Fall gehört das unter Umständen zum Manager. Soll heißen, es gibt eine Klasse die weiß wie ein Turm eines bestimmtes Typs erstellt wird und mit welchen Daten diese Instanz gefüttert wird. Wenn die Türme natürlich zu unterschiedlich sind, macht es sicherlich sinn irgendwann verschiedene Klassen für die einzelnen Türme zu verwenden. Da muss man aber immer den speziellen Fall betrachten. Guck dir Strategy doch einfach mal und und danach versuchst du das was du für am sinnvollsten hältst.