Hallo zusammen!
Bei SWT bin ich auf ein problem gestoßen: wie realisiert man ein Singleton, wenn der Konstruktor einen Übergabeparameter hat?
Wenn ich jetzt eine eigene Klasse implementiere, von der es nur ein Exemplar geben wird, jedoch die Parameter für den Konstruktor unterschiedlich sein können...
wie macht man das üblicherweise?
Ich habs bisher so gemacht:
So wirklich zufriedenstellend ist das ganze aber nicht. Zuerst muss getInstance(a,b,c,d) aufgerufen werden und anschließend kann erst getInstance() aufgerufen werden. Sonst wird null zurückgegeben und es hagelt nur so Null-Pointer-Exceptions. Wenn jedoch bereits eine Instanz existiert und man ruft noch einmal getInstance(a,b,c,d) auf, so werden die Parameter ignoriert. Das halte ich auch für keine so tolle Lösung...
Wie wird das üblicher Weise realisiert?
Bei SWT bin ich auf ein problem gestoßen: wie realisiert man ein Singleton, wenn der Konstruktor einen Übergabeparameter hat?
Wenn ich jetzt eine eigene Klasse implementiere, von der es nur ein Exemplar geben wird, jedoch die Parameter für den Konstruktor unterschiedlich sein können...
wie macht man das üblicherweise?
Ich habs bisher so gemacht:
Code:
public class ABC extends XYZ{
private static ABC instance = null;
private Table(int a, int b, int c, int d) {
super(a, b, c, d);
}
public static ABC getInstance(){
return instance;
}
public static ABC getInstance(int a, int b, int c, int d){
if (instance==null){
instance = new ABC(a, b, c, d);
}
return instance;
}
}
So wirklich zufriedenstellend ist das ganze aber nicht. Zuerst muss getInstance(a,b,c,d) aufgerufen werden und anschließend kann erst getInstance() aufgerufen werden. Sonst wird null zurückgegeben und es hagelt nur so Null-Pointer-Exceptions. Wenn jedoch bereits eine Instanz existiert und man ruft noch einmal getInstance(a,b,c,d) auf, so werden die Parameter ignoriert. Das halte ich auch für keine so tolle Lösung...
Wie wird das üblicher Weise realisiert?