Source code |
|
1 2 3 4 5 6 7 8 9 10 11 |
public final class myClass { private static final myClass INSTANCE = new Singleton(); private myClass() {} public static Singleton getInstance() { return INSTANCE; } } |
Guru
Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
Was wäre denn so schlimm daran, davon zwei Instanzen zu erzeugen?Quoted
Original von Markus
In einem Programm habe ich eine Klasse, die mehr oder weniger eine HashTabelle in ein Objekt verpackt plus noch ein paar Zusatzfunktionen.
Das ganze wird recht häufig im Programm genutzt, um nun zu verhindern dass zwei Instanzen davon entstehen habe ich mir also überlegt, das ganze als Singleton zu realisieren.
Das fände ich am saubersten. Die Try-Catch-Blöcke sehe ich sogar fast positiv, weil dadurch auch im Code kenntlich gemacht wird, daß an getInstance() bestimmte Vorbedingungen geknüpft sind.Quoted
So, nun habe ich aber das Problem, dass die Klasse so einige Parameter braucht um existieren zu können.
Daher die Frage: Gibt es da irgendeinen "idealen" Lösungsweg so etwas zu realisieren? Oder ist das beim Singleton gar nicht gewünscht?
Ich habe mir jetzt gedacht:
[...]
Exception werfen -> Hätte zur Folge, dass man jedes mal bei getInstance mit try/catch bzw. throw arbeiten müsste. ):
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 |
private static MyInterface m_instance = null; private MySingleton(){ // alles vernünftig initialisieren } public static MyInterface getInstance{ if (m_instance == null) m_instance = new MySingleton(); return m_instance; } |
Quoted
Original von Joachim
Was wäre denn so schlimm daran, davon zwei Instanzen zu erzeugen?
Quoted
Die Klasse vollständig und vernünftig mit dem Default-Constructor initialisieren und die zur verfügung gestellten Methoden auch ohne zusätzliche Informationen funktionstüchtig machen, sodass sie ein sinnvolles Ergebnis liefern (leere Vectoren z.b.)
Quoted
wo kommen die Parameter denn her?
Quoted
Oder du arbeitest mit Design by Contract.
Quoted
Original von AnyKey
dier scheint ein guter link zu sein:
http://www.javaworld.com/javaworld/jw-04…gnpatterns.html
hab es aber nur überflogen.