| 

.NET C# Java Javascript Exception

3
Um ein Singleton in C# zu schreiben, kann ich das ja klassisch angehen (mit null-Prüfung und statischem Feld und so), oder ich mache einfach eine statische Klasse, was irgendwie viel einfacher und schneller geht. Hat das irgendwelche Nachteile?
10.06.2011
Jakob Pfeil 31 2
2 Antworten
3
Mit einer statischen Klasse kannst Du nicht alles machen, was mit der "klassischen" Lösung geht, z.B. Interfaces implementieren, von einer Basisklasse erben oder eine Instanz irgendwo als Parameter übergeben. Du hast dann auch wenig bis keine Kontrolle darüber, wann Dein Singleton instanziiert wird - manchmal ist eine lazy-Initialisierung ganz nützlich.
10.06.2011
Matthias Hlawatsch 13,2k 4 9
2
Grundsätzlich sollten statische Klassen nur als Funktionssammlungen verwendet werden. Bestes Beispiel dafür ist Math. Sobald die Methoden auf einen internen Status zurück greifen, somit also Felder existieren, ist ein Singleton viel besser geeignet. Dies macht sich vorallem dann bemerkbar wenn man etwas automatisiert testen möchte.

Das ist zwar mit dem herkömmlichen Singleton schon schwierig, mit einer rein statischen Klasse aber nahezu unmöglich. Denn irgend wie muss man ja den Status der statischen Klasse ändern können um seine Tests zu unterstützen.

Ansonsten gillt das was Matthias geschrieben hat:
- man kann Interfaces verwenden
- die Instanz des Singletons kann per Parameter übergeben werden, wodurch sie nachträglich leichter zu ersetzen ist bzw. es nicht so schwierig wird den Singleton in eine einfache Klasse zurück zu wandeln falls das nötig ist
- Singletons haben, je nach verwendetem Pattern, ein definierten Zeitpunkt wann sie erstellt werden, demnach kann man auf die Erstellung Einfluss nehmen zum Beispiel indem man ihn durch eine Factory erstellen lässt oder per Konstruktor konfiguriert
10.06.2011
Hendrik Lösch 1,5k 1 9

Stelle deine .net-Frage jetzt!