Hallo, Manche sagen, ein Singleton ist ein Antipattern und sollte nicht verwendet werden ..... da man vielleicht doch mal eine weitere Instanz benötigt. Wie sieht es da mit einer rein statischen Klasse aus? Von der weiß ich nur, dass man ihr keinen Konstruktor geben sollte also die Möglichkeit nehmen, dass sie instanziiert wird. Und, sie kann nur auf statische Objekte und Methoden zugreifen. In einer gewissen Zielschnittmenge, also was will ich erreichen, wären Singleton und statische Klasse gleich gut oder schlecht. Ich frage mich warum es ein Singelton überhaupt gibt, wenn ich ebensogut eine statische Klasse verwenden kann. Konkrete Verwendung wäre z.b. Zugriff auf eine Hardwarekomponente, die es nur einmal gibt. Z.b. Uart.
Peter schrieb: > Hallo, > Manche sagen, ein Singleton ist ein Antipattern und sollte nicht > verwendet werden ..... da man vielleicht doch mal eine weitere Instanz > benötigt. Was mich am Singleton stört ist eher, dass es oft als Ersatz für globale Variablen verwendet wird, weil die ja so böse sind. Und dann wird gar nicht bemerkt, dass man damit fast alle Nachteile der globalen Variablen trotzdem hat. > Wie sieht es da mit einer rein statischen Klasse aus? > Von der weiß ich nur, dass man ihr keinen Konstruktor geben sollte also > die Möglichkeit nehmen, dass sie instanziiert wird. Eine Klasse, die nicht instanziiert wird und von der auch nicht abgeleitet wird, ist meiner Meinung nach Blödsinn. Die Funktionen und Variablen kann ich dann genauso gut hinschreiben, ohne eine Pseudoklasse drum rum zu basteln, die keinerlei Nutzen bringt. Das kommt eher aus der Java-Ecke, wo es nicht anders geht. > In einer gewissen Zielschnittmenge, also was will ich erreichen, wären > Singleton und statische Klasse gleich gut oder schlecht. > > Ich frage mich warum es ein Singelton überhaupt gibt, wenn ich ebensogut > eine statische Klasse verwenden kann. Ein Vorteil eines Singleton ist, dass dieser bei der ersten Verwendung initialisiert wird. Das bedeutet einerseits, dass das nur passiert, wenn er überhaupt verwendet wird, was Ressourcen sparen kann. Andererseits kann man kein Problem mit der Initialisierungsreihenfolge bekommen. > Konkrete Verwendung wäre z.b. Zugriff auf eine Hardwarekomponente, die > es nur einmal gibt. > Z.b. Uart. Und wenn es mehrere UARTs gibt?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.