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
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