C ++ Singleton vs vollständig statisches Objekt

Nehmen wir an, wir brauchen nur eine Instanz einer Klasse in unserem Projekt. Es gibt verschiedene Möglichkeiten, dies zu tun.

Ich möchte vergleichen. Bitte überprüfen Sie mein Verständnis.

1) Klassisches Singleton-Muster

2) Vollständig statische Klasse (alle Methoden und Member sind statisch).


ie ich verstehe, sind die Unterschiede folgend

a) Die Reihenfolge der Initialisierung von statischen Elementen über verschiedene Einheiten hinweg ist nicht definiert. Bei einer vollständig statischen Elementinitialisierung können daher keine statischen Elemente / Funktionen aus anderen Modulen verwendet werden. Und Singleton hat dieses Problem nicht.

b) Wir müssen uns mit Threading für getInstance () von Singleton befassen. Bei vollständig statischen Klassen tritt dieses Problem jedoch nicht auf.

c) Der Zugriff auf Methoden sieht etwas anders aus. Foo :: bar (); vs Foo :: getInstance () -> bar (); Im Allgemeinen kann Singleton NULL zurückgeben, um festzustellen, dass beim Erstellen von Objekten Probleme aufgetreten sind, und statische Klassen können dies nicht.

d) Die Definition der Klasse sieht ein bisschen klobig aus, mit ein paar Statiken für die statische Klasse.

Habe ich etwas verpasst?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage