Singleton

Definition - Was bedeutet Singleton?

Ein Singleton ist eine Klasse, mit der nur eine einzige Instanz von sich selbst erstellt werden kann und die Zugriff auf diese erstellte Instanz gewährt. Es enthält statische Variablen, die eindeutige und private Instanzen von sich selbst aufnehmen können. Es wird in Szenarien verwendet, in denen ein Benutzer die Instanziierung einer Klasse auf nur ein Objekt beschränken möchte. Dies ist normalerweise hilfreich, wenn ein einzelnes Objekt erforderlich ist, um Aktionen systemübergreifend zu koordinieren.

Das Singleton-Muster wird in Programmiersprachen wie Java und .NET verwendet, um eine globale Variable zu definieren. Ein einzelnes systemübergreifendes Objekt bleibt konstant und muss nur einmal und nicht mehrmals definiert werden.

Technische.me erklärt Singleton

Ein Singleton soll nur eine Instanz von sich selbst bereitstellen und gleichzeitig einen globalen Zugriffspunkt ermöglichen. Das Implementieren eines Singleton-Musters umfasst das Erstellen einer Klasse mit einer Methode, die eine neue Instanz der Klasse erstellt. Um ein Singleton-Muster zu implementieren, müssen die Prinzipien der Einzelinstanz und des globalen Zugriffs erfüllt sein. Die Singleton-Klasse ist wie ein globales Repository für eine Instanz von sich selbst, wodurch der Konstruktor privat wird. Daher kann eine Instanz außerhalb der Klasse überhaupt nicht erstellt werden, und ein Singleton kann nur eine Instanz enthalten. Eine Singleton-Klasse instanziiert sich selbst und verwaltet diese Instanz systemübergreifend.

Abstrakte Fabrik-, Bau- und Prototypmuster können Singletons verwenden. Fassadenobjekte und statische Objekte sind häufig Singletons. Die Singleton-Implementierung erfordert einen Mechanismus, über den auf ein Klassenmitglied zugegriffen werden kann, ohne dass ein Klassenobjekt erstellt und der Wert von Klassenmitgliedern unter Klassenobjekten beibehalten werden muss. Die Schritte zum Erstellen eines Singletons sind wie folgt:

  1. Der Konstruktor wird privat gemacht. Dadurch kann nur die Klasse auf den Singleton zugreifen.
  2. Beispiel:
    Klassentestdaten
    {
    Private Testdaten ()
    {
    //… no-op für einen Singleton

  3. Eine einzelne interne Instanz der Klasse wird mithilfe einer Methode erstellt. Die Methode wird in diesem Beispiel als Instanz bezeichnet. Die Methode "Instanz" wird verwendet, um die Klasse für den Zugriff auf eine einzelne Instanz zu initialisieren. Die Instanzmethode wird in diesem Beispiel als statisch markiert, um allen Threads einen konsistenten Zugriff zu ermöglichen. Außerhalb der Instanzerstellung wird die Anweisung "lock" verwendet, um den Multithread-Zugriff zu steuern. Dadurch wird die Instanzerstellung an einen einzelnen Thread gebunden.

    Beispiel:

    // Verzögerte Erstellung einer internen Singleton-Instanz
    Öffentliche statische Testdateninstanz
    {
    Bezahlung
    {
    Sperre (Art von (Testdaten))
    {
    If (_instance == null)
    _instance = testdata ();
    }
    Return _instance;
    }
    }