Hi
ich habe unter anderem folgende Klassen gegeben:
und
[Java]
public class Person {
// bei uns verdienen erst einmal alle gleich viel ...
public int gehalt = 42;
public String vorname;
public String nachname;
public Person(String vname, String nname) {
vorname = vname;
nachname = nname;
}
public String gibName() {
return vorname + " " + nachname;
}
}
[/code]
Nun ist es meine Aufgabe den Code zu verschönern. Ich bin schon darauf gekommen, dass der Geschäftsführer ein Singleton sein sollte. Das war ja mit dem Kommentar auch nicht so schwer. Das Muster habe ich auch im GOF Entwurfsmuster nachgeschlagen. In seiner Reinform ist dieses Muster das einfachste von allen. Da ich aber für den Konstruktoraufruf Parameter brauche ist folgender Code nicht möglich:
[Java]
public getGeschaeftsfuehrer() {
if ( geschaeftsfuehrer == null) { // private static geschaeftsfuehrer existiert nun entsprechend dem Vorbild aus GOF
geschaeftsfuehrer = new Geschaeftsfuehrer();
} return geschaeftsfuehrer;
}
[/code]
Ich möchte nicht, dass der Klient immer
parametrisiert aufrufen muss. Ich möchte auch nicht, dass
Geschaeftsfuehrer ohne Namen zurück gibt (Vielleicht muss ich diesen Wunsch aufgeben), also ist es auch nicht gut einen Standardkonstruktor zu erstellen.
Dieses Problem ist nicht ganz neu, meine eigenen Recherchen haben einige Lösungsvorschläge in C++ und C# gefunden. Von den Schwierigkeiten die ich mit diesen Sprachen hatte abgesehen waren alle Lösungen viel zu Kompliziert und nach meinem Geschmack zu weit vom Ideal aus dem Buch entfernt.
Wie wird ein Singleton, das Parameter im Konstruktor benötigt einfach und sauber konstruiert?
gruß
Michi
ich habe unter anderem folgende Klassen gegeben:
Java:
import java.util.ArrayList;
/* Der Geschäftsführer ist der (einzige) oberste Chef der Firma. */
public class Geschaeftsfuehrer extends Person {
ArrayList<Abteilungsleiter> abteilungsleiter = new ArrayList<Abteilungsleiter>();
public Geschaeftsfuehrer(String vname, String nname) {
super(vname, nname);
}
public void fuegeAbtLeiterHinzu(Abteilungsleiter al) {
abteilungsleiter.add(al);
}
}
und
[Java]
public class Person {
// bei uns verdienen erst einmal alle gleich viel ...
public int gehalt = 42;
public String vorname;
public String nachname;
public Person(String vname, String nname) {
vorname = vname;
nachname = nname;
}
public String gibName() {
return vorname + " " + nachname;
}
}
[/code]
Nun ist es meine Aufgabe den Code zu verschönern. Ich bin schon darauf gekommen, dass der Geschäftsführer ein Singleton sein sollte. Das war ja mit dem Kommentar auch nicht so schwer. Das Muster habe ich auch im GOF Entwurfsmuster nachgeschlagen. In seiner Reinform ist dieses Muster das einfachste von allen. Da ich aber für den Konstruktoraufruf Parameter brauche ist folgender Code nicht möglich:
[Java]
public getGeschaeftsfuehrer() {
if ( geschaeftsfuehrer == null) { // private static geschaeftsfuehrer existiert nun entsprechend dem Vorbild aus GOF
geschaeftsfuehrer = new Geschaeftsfuehrer();
} return geschaeftsfuehrer;
}
[/code]
Ich möchte nicht, dass der Klient immer
Code:
getGeschaeftsfuehrer()
Code:
getGeschaeftsfuehrer()
Dieses Problem ist nicht ganz neu, meine eigenen Recherchen haben einige Lösungsvorschläge in C++ und C# gefunden. Von den Schwierigkeiten die ich mit diesen Sprachen hatte abgesehen waren alle Lösungen viel zu Kompliziert und nach meinem Geschmack zu weit vom Ideal aus dem Buch entfernt.
Wie wird ein Singleton, das Parameter im Konstruktor benötigt einfach und sauber konstruiert?
gruß
Michi
Zuletzt bearbeitet: