Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

wozu ist das singleton pattern gut?

17 views
Skip to first unread message

uwe ditzen

unread,
Apr 6, 2006, 10:02:02 AM4/6/06
to
hallo ,

habe eine verständnisfrage... mir ist nicht ganz klar wofür ich das
singleton pattern einsetzen soll/darf. ich habe jetzt schon soviel darüber
gelesen und bin etwas verunsichert, was den gebrauch des pattern angeht.
viele haben sich negativ über die verwendung des singleton pattern geäussert.
in welchen bereichen macht es wirlich sinn das singleton pattern einzusetzen?
mich würde speziell der bereich datenbanken interessieren...

vielleicht kann mir mal jemand auf die sprünge helfen.

vielen dank.

mfg. uwe ditzen

Kerem Gümrükcü

unread,
Apr 6, 2006, 10:18:00 AM4/6/06
to
Hallo Uwe,

das wird an sich in der Wikipedia sehr gut erklärt:
http://de.wikipedia.org/wiki/Einzelst%C3%BCck_%28Entwurfsmuster%29


Beste Grüße

Kerem Gümrükcü

"uwe ditzen" <uwed...@discussions.microsoft.com> schrieb im Newsbeitrag
news:982CDF8B-3ABE-4B37...@microsoft.com...

Frank Dzaebel

unread,
Apr 6, 2006, 2:47:50 PM4/6/06
to
Hallo Uwe,

> ... wofür ich das singleton pattern einsetzen soll/darf.

Vorweg -,
alle Pattern habe immer Vorteile und Nachteile.
Das ist ebenso beim Singleton Pattern so.
Ebenso ist ihre Implementation nicht fest, sondern
es sind ein grobe Muster, die Zielvorgaben geben.
Deswegen liest Du sicher mal positives und mal
negatives - bist vielleicht verunsichert - ganz normal.
Ok, wusstest Du sicher alles schon.

Das Ziel des Singleton-Patterns ist:
sicherzustellen, dass eine Klasse nur eine
Instanz hat und einen globalen Zugriffspunkt
auf diese Instanz zu ermöglichen.

[Exploring the Singleton Design Pattern]
http://msdn.microsoft.com/library/en-us/dnbda/html/singletondespatt.asp

[Implementing Singleton in C#]
http://msdn.microsoft.com/library/en-us/dnpatterns/html/ImpSingletonInCsharp.asp

[Implementing the Singleton Pattern in C#]
http://www.yoda.arachsys.com/csharp/singleton.html

> speziell Datenbanken interessant ...

Bei Datenbanken tritt der Einsatz in unteren
Schichten eher nicht auf, da das genau das
ist, wozu man DBs nutzen kann, als Singleton.
Schon eher aber in oberen (Business-Schichten).

Ein typisches Einsatzgebiet sind (globale) Einstellungen,
die von jeder Client-Klasse nutzbar sein sollen.
Jede Client-Klasse soll also Zugriff auf genau diese
einmaligen Einstellungs-Objekte haben. So ist denn tatsächlich
z.B. folgendes im Framework als Singleton implementiert:

[ApplicationSettingsBase.SettingsKey-Eigenschaft]
http://msdn2.microsoft.com/de-de/library/3wb96zbd(vs.80).aspx

Vielleicht hört man sich auch mal Dirk Primbs zum
Singleton Pattern an, für detallierte Aussagen
über die Anwendbarkeit:

Webcast: Patterns im Einsatz (Teil 7-11) Singleton Pattern
http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=118761483

Hier sind denn am Ende auch noch viele Links,
in denen wieder weitere Infos gefunden werden können.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Marvin Massih

unread,
Apr 6, 2006, 6:14:09 PM4/6/06
to
Hallo Frank,

Frank Dzaebel schrieb:


> Das Ziel des Singleton-Patterns ist:
> sicherzustellen, dass eine Klasse nur eine
> Instanz hat und einen globalen Zugriffspunkt
> auf diese Instanz zu ermöglichen.

Was ich mich schon länger frage - wieso nimmt man da nicht einfach eine
Klasse, die nur rein statisch genutzt werden kann/soll?

Gruß
Marvin

--
http://groenndemon.de/blog

Frank Dzaebel

unread,
Apr 7, 2006, 2:21:49 AM4/7/06
to
Hallo Marvin,

>> Das Ziel des Singleton-Patterns ist:
>> sicherzustellen, dass eine Klasse nur eine
>> Instanz hat und einen globalen Zugriffspunkt
>> auf diese Instanz zu ermöglichen.
>
> Was ich mich schon länger frage - wieso nimmt man da nicht einfach eine
> Klasse, die nur rein statisch genutzt werden kann/soll?

Ja :) Kurze Frage, lange Antwort ...
Singletons sind sehr ähnlich zu globalen Variablen
und werden oft mit globalen Variablen implementiert,
selbst, wenn sie als Klassenmember "verkleidet" sind.

Der Unterschied zwischen beiden ist fein:
- weil man beim Singleton über eine Klassen-Methode
auf die Instanz zugreift, kann man hier zusätzliche
Logik unterbringen.
- der Sinn des Singletons ist es, sicherzustellen,
dass die Klasse nur eine Instanz hat. Laut GoF
könnte das aber auch ein Instanz-Pool sein. Das wäre
über eine statische Klasse nicht möglich.
- Wegen der zusätzlichen Erzeugungs-Logik kann
zum Beispiel eine gewisse Reihenfolge von
Instanziierungen ermöglicht werden.
http://c2.com/cgi/wiki?SingletonPattern
(siehe hier auch Polymorphism)
- .. weitere hier nicht aufgezählte Unterschiede


Singleton should be considered only if all three of
the following criteria are satisfied:
- Ownership of the single instance cannot be
reasonably assigned
- Lazy initialization is desirable
- Global access is not otherwise provided for
http://home.earthlink.net/~huston2/dp/singleton.html


With the Singleton design pattern you can:
- Allow multiple instances in the future without
affecting a singleton class's clients
http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html

0 new messages