Singleton Pattern

Das Singleton Pattern erlaubt es einem Programmierer von einer Klasse genau eine Instanz zu erstellen. Auf die Methoden und Eigenschaften dieser Klasse kann man von überall her zugreifen.

namespace MyApplication
{
    class Singleton
    {
        // instance of Singleton Class
        private static Singleton instance;
        // constructor set to private!
        private Singleton()
        {
        }
        // methode to access this class and all methodes
        // within Singleton Class
        public static Singleton getInstance()
        {
            if(instance == null)
                instance = new Singleton();
            return instance;
        }
        // a methode that you like to get access to
        public void DoSomethingVerySpecific()
        {
            // Does something very specific
        }
    }
    class SomethingElse
    {
        public void DoSomething()
        {
            // calling the methode from anywhere
            Singleton.getInstance().DoSomethingVerySpecific();
        }
    }
}

Was benötigt man nun um eine Klasse als Singleton zu implementieren?

Der Konstruktor wird private gesetzt, sodass man von außen keine Instanz dieser Klasse erstellen kann. Als nächstes benötigt man eine Variable vom Typ der Singletonklasse. Diese wird ebenfalls private und auf static gesetzt.

Wie kommen wir nun an die Methoden und Eigenschaften dieser Klasse?

Wir schreiben eine public Methode getInstance(). Diese Methode prüft, ob die Variable instance schon einmal initialisiert wurde. Wenn nicht, wird die Variable initialisiert (innerhalb der Klasse können wir ja auf den Konstruktor zugreifen) und zurückgegeben.

Jetzt können wir in anderen Klassen über Singleton.getInstance().DoSomethingVerySpecific() auf die Singletonklasse zugreifen.

Soviel erstmal dazu.

So long…

About Jonathan Pfeifer

Der Autor beschäftigt sich mit .Net, SharePoint und der SQL Server Technologie von Microsoft. Einige seiner Eindrücke werden in diesem Blog festgehalten. Für Fragen oder Anregungen steht er gerne per Email zur Verfügung.
This entry was posted in work-related and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>