Das "Singleton Pattern" soll sicherstellen, dass von einer Klasse nur ein einzelnes Objekt Inszanziert werden kann.
Die folgende Abbildung zeigt die Darstellung eines Singleton im Klassendiagramm der UML:
Das nachfolgende Beispiel zeigt die Standardimplementierung in Java wobei das Singleton bei der ersten Verwendung erzeugt wird. Die Methode getInstance() muss synchronized deklariert werden, damit nicht mehrere Threads diese Methode parallel aufrufen und mehrere Objekte des Singletons entstehen.
public class Singleton { private static Singleton singleton_1; private Singleton(){} public static synchronized Singleton getInstance(){ if (singleton_1 == null){ singleton_1 = new Singleton(); } return singleton_1; } }
Eine weitere Möglichkeit der Implementierung ist die Instanzierung des Singleton beim laden der Klasse. Spielt der Zeitpunkt der Instanzierung keine Rolle ist diese Variante vorzuziehen, da unter anderem die Deklaration mit synchronized nicht erforderlich ist.
public class Singleton2 { private static Singleton2 singleton2 = new Singleton2(); private Singleton2(){} public static Singleton2 getInstance(){ return singleton2; } }
Singletons sind in Scala Bestandteil der Sprache. Eine aufwendige Konstruktion
von Singletons entfällt. Ein Scala Singleton entsteht dadurch das eine
Klasse mit dem Scala Schlüsselwort object
eingeleitet wird.
Durch die Verwendung des Schlüsselwortes object
wird in Scala sichergestellt,
dass es nur eine Instanz dieser Klasse gibt.
Das nachfolgende Scala Beispiel zeigt die Definition eines Singleton Objektes in Scala.
object ScalaSingleton{ def value1 = 45 def increase(x : Int) : Int = x + 1 }
de.wikipedia.org
Singleton (Einzelstück)
http://de.wikipedia.org/wiki/Einzelst%C3%BCck_(Entwurfsmuster)
Jens Günther
http://wwwswt.informatik.uni-rostock.de
Singleton
http://wwwswt.informatik.uni-rostock.de/deutsch/Infothek/Entwurfsmuster/patterns/Singleton/index.html
THESERVERSIDE.DE
Singleton Pattern in Java
http://www.theserverside.de/singleton-pattern-in-java/