Zitat:
|
Initialisierungen von singleton instanziierten Klassen sollte man tunlichst von der Erzeugung trennen, da es sonst kein echtes abstract Singleton ist. Zudem musst du bei deiner Klasse unterscheiden zwischen "create class" und "get reference", was die Implementierung umständlicher macht.
|
Instanziierung ist die Erzeugung, eben new oder createInstance beim ST.
Initialisierung ist die Vorbelegung mit Werten (bspw. im Konstruktor oder über eine Init-Funktion).
Mittlerweile sehe ich das ähnlich wie der Doc und benutze auch eigentlich kein Singleton mehr. Jedenfalls: Wenn Du an zwei Stellen oder mehr eine Instanz holst/erzeugst, läufst Du in das Problem, wenn Du das mit Parametern machst, dass Du nicht genau weißt, welchen Zustand das Objekt gerade hat. Bzw. brauchst Du überall diese Parameter, obwohl sich der ST-Aufruf da in verschiedensten Programmkomponenten (und damit Variablenräumen) befinden kann.
Eine Alternative kann ein DI-Container sein. Oder das Objekt ist so flexibel, dass man es immer wieder neu konfigurieren kann. Oder Du hinterlegst die Konfiguration in einer Registry o.ä.