Looking for c++ Keywords? Try Ask4Keywords

C++Singleton Design Pattern


Bemerkungen

Ein Singleton soll sicherstellen, dass eine Klasse nur eine Instanz hat und einen globalen Zugriffspunkt bietet. Wenn Sie nur eine Instanz oder einen geeigneten globalen Zugriffspunkt benötigen, jedoch nicht beide, sollten Sie andere Optionen in Betracht ziehen, bevor Sie sich dem Einzelspieler zuwenden.

Globale Variablen können es schwieriger machen, über Code nachzudenken. Wenn zum Beispiel eine der aufrufenden Funktionen mit den Daten, die sie von einem Singleton empfängt, nicht zufrieden ist, müssen Sie jetzt herausfinden, was zuerst die fehlerhaften Daten des Singleton an erster Stelle gibt.

Singletons fördern auch die Kopplung , ein Begriff, der verwendet wird, um zwei Komponenten des Codes zu beschreiben, die miteinander verbunden sind, wodurch die eigenen Maßnahmen zur Selbsteinschließung jeder Komponente reduziert werden.

Singletons sind nicht gleichlaufsicher. Wenn eine Klasse über einen globalen Zugriffspunkt verfügt, kann jeder Thread darauf zugreifen, was zu Deadlocks und Race-Bedingungen führen kann.

Schließlich kann eine langsame Initialisierung zu Leistungsproblemen führen, wenn sie zum falschen Zeitpunkt initialisiert wird. Durch das Entfernen der verzögerten Initialisierung werden auch einige der Features entfernt, die Singletons erst recht interessant machen, wie etwa Polymorphismus (siehe Unterklassen).

Quellen: Spielprogrammierungsmuster von Robert Nystrom

Singleton Design Pattern Verwandte Beispiele