Die Wahl habe ich eine Basisklasse Feind und verschiedene Unterklassen aufgerufen, die vom Typ Feind sind wie BigEnemy, LazerEnemy, AvoidingEnemy usw.eine Unterklasse ohne switch-Anweisung in Java
ich eine Ausbildung Klasse, deren Zweck ist die Schaffung spezialisierte Formationen von Feinden wie Linie, Gitter, Pyramide.
Ich möchte Bildung als Parameter aufnehmen, welche Art von Unterklasse des Feindes ich erstellen möchte.
Formation f = new Formation("LazerEnemy","triangle", 4); // makes a triangle formation of lazer enmies
Formation f = new Formation("BigEnemy","line", 10); // makes a line of big enemies
Derzeit würde ich etwas tun, wie eine Zeichenfolge enemyType genannt passieren (oder es könnte nur eine ganze Zahl sein und Aussagen schalen), aber da ich so viele Gegnertypen habe ich mich gefragt, ob es eine sauberere war Möglichkeit, den Typ des Objekts zu übergeben, das ich instanziieren möchte, das keine switch-Anweisung verwenden muss.
Vielleicht hat das etwas mit Factory und this Frage zu tun, aber ich verstehe es nicht ganz.
Dank
Warum können Sie nicht direkt eine 'neue LazerEnemy passieren()' oder 'neue BigEnemy()', mit 'Formation' Konstruktor ein' Enemy' nehmen als erster Parameter? – Tunaki
Sie haben drei Möglichkeiten, 1) bedingten Verzweigungsschalter oder wenn-sonst verwenden, 2) Reflektion verwenden und in der Klasse z. LazerEnemy.class, 3) haben unterschiedliche Fabrikmethoden, z.B. Formation.createBigEnemy ("line", 10); – bhspencer
@Tunaki Also sagst du, in einem Unterklasse-Objekt als ein Parameter zu Bildung wie Formation (neue LazerEnemy(), "Pyramide", 4) übergeben und dann Formation Konstruktor tun was? Ich muss mehrere neue Feindtypen erstellen. Formation (Feind e, String ftype, int-Nummer) {}. Ich muss jetzt mehrere Gegner erschaffen. Sollte ich e klonen? – user3772547