verschiedene Klasse laden (Designfrage)

Status
Nicht offen für weitere Antworten.

Nickland

Neues Mitglied
Hallo,

habe eine kleine Designfrage zu einem von mir erstellten Programm:

Erstmal die allgemeine Beschreibung:
Ich habe ein Spiel welches ein Feld als GUI darstellen soll. Die ganze Logik ist auf verschiedene Klassen aufgeteilt und das Feld (GUI) selber ist als Singleton Objekt umgesetzt. Beim Starten eines neuen Spiels aus dem Menü rufe ich dann Field.newInstance() auf, um ein neues Feld zu generieren, während beim Spielen selbst das Feld über Field.getInstance() von anderen Klassen geholt wird.

Nun kommt die Frage:
Ich habe nun als Erweiterung die Möglichkeit zwischen 2 verschiedenen Feldern zu wählen. Dazu möchte ich aber jetzt nicht überall wo ich bisher Field.newInstance() oder Field.getInstance() habe das ganze mit einer if-Abfrage erweitern (um das richtige Feld anzusprechen), sondern die eigentliche Field Klasse so abändern, das dort bestimmt wird, welches Feld erstellt bzw. zurückgegeben wird.
Das ganze habe ich jetzt wie folgt umgesetzt: Ich habe die beiden neuen Felder von der original Feldklasse erben lassen, diese haben jetzt einen Konstruktor welcher von der original Feldklasse aufgerufen wird. In der Methode newInstance() frage ich jetzt ab, welches Feld gewählt werden soll und lade die entsprechende Klasse (autom. Typumwandlung, da Vererbung).

Übersicht:
Feldklasse (Singleton, Methoden: getInstance(), newInstance() + leere paint())
Feld_A (erbt von Feldklasse, nur Konstruktor, eine paint() und private Methoden)
Feld_B (erbt von Feldklasse, nur Konstruktor, eine paint() und private Methoden)

1. Wie würde man sowas am besten umsetzen, weil irgendwie bin ich von meiner jetztigen Umsetzung nicht ganz überzeugt / zufrieden...
2. Nun ist der Konstruktor im Singleton aber nicht mehr als private umsetzbar, sondern muss public sein (Fehlermeldung) und daher wäre dann ja eigentlich so ein bisschen das Konzept vom Singleton gebrochen, oder nicht?

Vielen Dank und lieben Gruß,
nick
 
Ist ein Spielfeld einzigartig?

An der Frage solltest du sehen, das du ein grundsätzliches Designproblem hast. Singletons sind evil, static ist evil (wenn es so benutzt wird wie du es gerade beschrieben hast)

€dit: Imho würd ich alles umbauen und eine normale, erweiterbare Spielfeld Klasse machen die beliebig instanziert werden kann. Ist natürlich ein bisschen mehr Aufwand, weil dann alles was darauf zugreifen muss eine Referenz auf das aktive Spielfeld braucht..
 
Nun, ich denke eigentlich schon. Es soll ja eigentlich während des ganzen Spiels nur ein Feld existieren und nicht mehrere Instanzen.

Sehe aber grad mit schrecken, dass das ganze Thema im falschen Bereich gelandet ist, hier gibt es ja noch eine J2ME Bereich... (kann man das bitte verschieben?) Denn da komm ich nämlich dann gleich mit einer weiteren kleinen Einschränkung:
In der einen Feldklasse (Feld B) verwende ich eine JSR die nicht auf jedem Handy verfügbar ist und daher das Feld dort nich funktionieren wird, während es mit Feld A funktioniert. Von daher geht das leider nicht mit einer direkten Klasse...

Aber schonmal danke für deine Idee 🙂 Gruß,
nick
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben