Bryan Albrecht

Singelton Pattern in C#

Im folgenden Text wird erklärt, was das Singelton Pattern ist und wie man es anwendet.

Ausgangslage

Du möchtest ein Programm schreiben, welches eine Klasse besitzt, welche nur einmal instanziiert werden kann. Diese Klasse soll ebenfalls einen Globalen Zugriffspunkt haben.

Ein weiterer Punkt, wieso man das Singelton Pattern verwenden würde, ist die Verwendung von multithreading.

Erklärung

Das Singelton Pattern stellt sicher, dass von einem Objekt oder von einer Klasse jeweils nur eine Instanz erzeugt werden kann. Dies kann nützlich sein, wenn das Objekt zum Beispiel auf Daten zugreift, welche nicht von mehreren gleichzeitig verändert werden dürfen.

Umsetzung in der Theorie

Das Ziel ist es, das das Singelton Pattern sicherstellt, dass wirklich nur eine Instanz vorhanden ist.

Aus diesem Grund arbeitet man mit einem privaten Konstruktor. Das heisst, dass man den öffentlichen Konstruktor vom Objekt aufruft. Dieser wiederum überprüft, ob das Objekt bereits besteht und ruft dann je nachdem einen privaten Konstruktor auf, welche das Objekt vollständig erstellt.

Implementierung

Der folgende Code ist auf der Basis für wiederverwendbaren Code in C# aufgebaut

  1. using System;
  2. public class Singleton
  3. {
  4.   private static Singleton instance;
  5.  
  6.   private Singleton() {}
  7.  
  8.   public static Singleton Instance
  9.   {
  10.   get
  11.   {
  12.     if (instance == null)
  13.     {
  14.       instance = new Singleton();
  15.     }
  16.     return instance;
  17.     }
  18.   }
  19. }

Wie man im Code sieht, gibt es zwei Konstruktoren. (public/private).

Im "public" Konstruktor wird überprüft, ob das Objekt bereits existiert.

Wenn ja, gibt er dieses zurück. Wenn nein, erstellt er ein neues Objekt, mit Hilfe vom "private" Konstruktor.