Frage

Vergeuden Sie nicht Ihre Zeit mit dieser Frage. Follow-up: Was Singletons so schlecht ist

?

Wenden Sie sich bitte an Hündin auf Singleton .

unsachgemäßen Gebrauch von Singleton viel Farbe verursachen kann. Welche Art von Problem haben Sie mit Singletons erlebt? Was ist üblich, einen Missbrauch dieses Muster?


Nachdem ich einige in die Antwort von Corey Graben entdeckte ich einige greate Artikel zu diesem Thema.

War es hilfreich?

Andere Tipps

Manchmal kann es Ihren Code macht eng gekoppelt mit der Singleton-Klasse direkt von Namen aus verschiedenen Teilen der Code-Basis refrerenced werden. So zum Beispiel, wenn Sie einen Teil Ihres Codes testen müssen und es verweist auf eine Singleton von einem diferent Teil des Codes kann man nicht leicht fälschen, dass die Abhängigkeit mit einem Mock-Objekt.

Es ist nichts falsch mit dem Singleton-Muster. Es ist ein Werkzeug und manchmal sollte es verwendet werden.

Ich habe nicht auf die Singleton so viel wie einige der anderen Plakate haben, aber fast alle Implementierungen ausgesetzt waren, die ich (in C #) gesehen haben, mit statischen Klassen / Methoden hätte erreicht werden können. Ich denke, man könnte argumentieren, dass eine statische Klasse eine Implementierung des Singleton-Musters ist, aber das ist nicht das, was ich habe gesehen worden. Ich habe war diese Singleton Menschen aufbauen und verwalten zu sehen Klassen / Objekte, wenn alles, was sie wirklich benötigt, um das statische Schlüsselwort zu verwenden.

Also, ich würde nicht sagen, dass das Singleton-Muster ist schlecht. Ich würde sagen, es ist ein bisschen wie Waffen. Ich glaube nicht, guns schlecht sind, aber sie können mit Sicherheit kann unangemessen verwendet werden.

Ich denke, eine angemessenere Frage sein könnte: In welchen Situationen ist die Verwendung eines Singletonmuster ungeeignet? Oder was haben Sie gesehen, dass verwendet einen Singleton, das nicht sollte.

Im Grunde Singleton ist eine Möglichkeit, statische Daten zu haben und so tut es nicht wirklich statisch ist.

Natürlich habe ich es verwenden, aber nicht versuchen, es zu missbrauchen.

Ein grundsätzliches Problem mit dem ursprünglichen GoF Design ist die Tatsache, dass der Destruktor nicht geschützt ist. Jeder mit einem Verweis auf die Singleton-Instanz ist frei, die Singleton zu zerstören.

Siehe John Vlissides Update in seinem Buch "Pattern Schlüpfen" "um ein Singleton Kill" ( Amazon Link ).

prost,

Rob

Es ist nichts falsch mit einem Singleton in mir selbst, und als Muster füllt es eine wichtige Rolle in der Notwendigkeit, bestimmte Objekte zu erkennen, nur ein einziges Mal erstellt werden.

Was es häufig verwendet wird ist ein Euphemismus für globale Variablen als Versuch, um globalen Variable Stigma zu bekommen, und es ist diese Anwendung, die von Natur aus falsch ist. Wenn eine globale Variable, die die richtige Lösung sein geschieht, einen Singleton verwendet, wird es nicht verbessern. Wenn es (als ziemlich üblich ist) falsch eine globale Variable zu verwenden, ist es in einem Singleton Einwickeln in Zukunft nicht macht es nicht mehr korrekt ist.

Die meisten der Singleton-Muster, die ich geschrieben sehen in einem Thread sichere Art und Weise nicht geschrieben. Wenn es richtig geschrieben, sie können nützlich sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top