Tumbleweed
Captain
- Registriert
- März 2008
- Beiträge
- 3.600
Dieses design pattern ist ja sehr verschrien, wenn man sich im Netz mal so umsieht. Ich selbst habe es schon ziemlich oft verwendet, vermutlich auch aus Gründen der Bequemlichkeit. Trotzdem muss ich sagen, obwohl ich weiß wie man es implementiert und was ich damit erreiche, fühle ich mich in einer Diskussion darüber eher schwach bewaffnet.
In den meisten Argumentationen, die man so findet, wird darauf hingewiesen, dass es einfach schlechtes Design ist, wenn man ein Singleton braucht. Das wird unterstützt mit Argumenten wie tight coupling der Klassen (loose coupling erstrebenswert), dann wird noch darauf hingewiesen, dass ein Singleton ja einen state hat (was anscheinend auch negativ ist) und letztlich wird noch auf die schlechte Testbarkeit hingewiesen. Ach ja und auf globale Variablen (denen Singletons wohl ähneln) wird ja auch herabgesehen.
Ich kann keines der Argumente so richtig erklären bzw. entkräften. Vielleicht kann ja jemand etwas gegen mein Halbwissen tun, sodass ich da endlich mal sicher argumentieren kann und es verstanden habe, was dafür bzw. dagegen spricht. Einfach nur in das gleiche Horn stoßen wie die Mehrheit, das liegt mir nicht. Wenn dann möchte ich schon wissen warum ich für oder gegen etwas bin.
Um das Thema vielleicht mal auf ein paar Eckpunkte zu reduzieren:
Ich habe übrigens schon einige blogs, Forendiskussionen und sonstige Artikel darüber gelesen und googlen kann ich auch. Daher brauche ich nicht wirklich eine Flut von links, die mich zu Seiten führen, auf denen auch wieder nur das übliche Getröte nach dem Motto "ich habe mal gehört Singleton ist böse, also lass es einfach" herrscht.
Nachdem ich neulich durch einen netten Link hier sogar gelernt habe, dass GOTO in manchen Fällen gar nicht so übel ist, wie es inzwischen verbreitet wird, bin ich noch vorsichtiger damit auf solche "band wagons" aufzuspringen. 
In den meisten Argumentationen, die man so findet, wird darauf hingewiesen, dass es einfach schlechtes Design ist, wenn man ein Singleton braucht. Das wird unterstützt mit Argumenten wie tight coupling der Klassen (loose coupling erstrebenswert), dann wird noch darauf hingewiesen, dass ein Singleton ja einen state hat (was anscheinend auch negativ ist) und letztlich wird noch auf die schlechte Testbarkeit hingewiesen. Ach ja und auf globale Variablen (denen Singletons wohl ähneln) wird ja auch herabgesehen.
Ich kann keines der Argumente so richtig erklären bzw. entkräften. Vielleicht kann ja jemand etwas gegen mein Halbwissen tun, sodass ich da endlich mal sicher argumentieren kann und es verstanden habe, was dafür bzw. dagegen spricht. Einfach nur in das gleiche Horn stoßen wie die Mehrheit, das liegt mir nicht. Wenn dann möchte ich schon wissen warum ich für oder gegen etwas bin.
Um das Thema vielleicht mal auf ein paar Eckpunkte zu reduzieren:
- Warum sind globale Variablen schlecht?
- Warum ist loose coupling erstrebenswert und was verbirgt sich eigentlich dahinter?
- Ist Singleton in manchen Fällen vielleicht sogar alternativlos bzw. wären alle Alternativen einfach nur furchtbar umständlich im Vergleich? (DB connection pooling, thread pooling etc.)
- Warum ist es negativ, dass ein Singleton einen state hat und was ist damit gemeint?
Ich habe übrigens schon einige blogs, Forendiskussionen und sonstige Artikel darüber gelesen und googlen kann ich auch. Daher brauche ich nicht wirklich eine Flut von links, die mich zu Seiten führen, auf denen auch wieder nur das übliche Getröte nach dem Motto "ich habe mal gehört Singleton ist böse, also lass es einfach" herrscht.