Hi!
Mein Projekt wächst und wächst und ich merke das ich viele Klassen habe, die nur einmal initialisiert werden. Also braucht man nur 1 Instanz dieser Klasse.
Die Frage ist, ob du wirklich sicherstellen musst, dass es nur eine einzige Instanz geben darf. Ansonsten ist es wenig sinnvoll, das Singleton-Pattern zu missbrauchen, wenn du nur eine Instanz brauchst. Du hast nur mehr Aufwand, das Singleton in jeder Klasse zu implementieren und ziehst gar keinen Nutzen aus seinen Eigenschaften. Weiterhin unterbindet es ziemlich wirkungsvoll ein sinnvolles automatisches Testen (TDD).
Dem Gegenüber würden statische Klassen bzw. Methoden stehen.
Meine Frage ist, welches von beiden besser ist?
Entscheide, was besser ist: ein Objekt mit Eigenschaften und Methoden oder Funktionen und gegebenenfalls Variablen, die in einem "Namespace" liegen. Und kannst du diese Frage generell klären, dich daraufhin auf einen Weg beschränken oder willst du nicht lieber von Fall zu Fall entscheiden was sinnvoll ist?
Ich empfinde die erste Lösung als besser, da man als init() Rückgabe wert theoretisch eine andere Instanz zurückgeben könnte z.B. cSingletonChild. Also eine Fabrik.
Ein Singleton ist etwas einzigartiges. Davon kann es weder Kinder, noch mehrere Instanzen, noch mal dies und mal das geben, sonst ist es kein Singleton mehr.
Lo!