mikrocontroller.net

Forum: PC-Programmierung C++ Singleton vs. statische Klasse


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Kaj (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.