Das Singleton-Designmuster ist ein weit verbreitetes Designmuster in der objektorientierten Programmierung, da sichergestellt wird. Dies bedeutet, dass jede Anfrage für eine Instanz der Klasse dieselbe Instanz zurückgibt, anstatt eine neue zu erstellen.
Singleton -Designmuster in C#
Das Singleton -Muster ist bekannt für seine Einfachheit und Effektivität, um sicherzustellen, dass es nur eine Instanz der Klasse gibt, was es für viele Softwareentwickler zu einer beliebten Wahl macht. Das Singleton -Muster wird häufig verwendet, um sicherzustellen, dass ein einziger Zugangspunkt für eine gemeinsame Ressource oder einen gemeinsamen Dienst besteht. Hier ist die Syntax für die Verwendung:
Öffentliche Versiegelungsklasse
Privates statisches ReadonlyInstance = neu ();
Privatgelände()
Öffentliche statischeBeispiel
erhalten
Rückkehrinstanz;
Das versiegelte Schlüsselwort wird verwendet, um zu verhindern, dass die Klasse vererbt wird, und das Instanzfeld wird als gelesen gekennzeichnet, um sicherzustellen. Der Konstruktor ist als privat markiert, um die externe Instanziierung der Klasse zu verhindern, und die Instanzeigenschaft bietet eine Möglichkeit, auf die einzelne Instanz der Klasse zuzugreifen, und ist als statisch gekennzeichnet, damit er ohne Erstellung einer Instanz der Klasse zugegriffen werden kann.
In C# wird ein Singleton -Muster typischerweise mit einem privaten Konstruktor, einem statischen Instanzfeld und einer öffentlichen statischen Eigenschaft oder Methode zum Zugriff auf die Instanz implementiert. Die Grundidee besteht darin, sicherzustellen, dass nur eine Instanz der Klasse existieren kann, indem sie so steuern, wie sie instanziiert und zugegriffen wird. Hier ist ein Beispielcode, der die Erstellung und Verwendung des Singleton -Design -Musters in C#demonstriert:
mit System verwenden;
// Definieren Sie die Taschenrechnerklasse mit einem privaten Konstruktor und einem statischen Instanzfeld
Öffentlicher Versiegelungsrechner
private statische Taschenrechnerinstanz;
private calculator () // privater Konstruktor verhindert die Instanziierung der Taschenrechnerklasse von außerhalb der Klasse selbst
// Definieren Sie die Instanzeigenschaft, die ein neues Taschenrechnerobjekt erstellt, wenn es noch nicht existiert, und gibt es zurück
öffentliche statische Rechnerinstanz
erhalten
if (Instance == NULL) // Überprüfen Sie, ob bereits ein Taschenrechnerobjekt erstellt wurde
Instance = New Calculator (); // Wenn nicht, erstellen Sie ein neues Taschenrechnerobjekt und weisen Sie es dem Instanzfeld zu
Rückkehrinstanz;
public int add (int x, int y)
Rückgabe x + y;
// Definieren Sie die Subtrahermethode, die eine Ganzzahl von einer anderen subtrahiert und das Ergebnis zurückgibt
public int subtrahieren (int x, int y)
Rückkehr x - y;
// Definieren Sie die Programmklasse mit einer Hauptmethode
Klassenprogramm
statische void main (String [] args)
Taschenrechner Calc = Taschenrechner.Beispiel; // Erhalten Sie eine Instanz des Taschenrechnerobjekts mit der Instanzeigenschaft
int result1 = calc.Add (5, 7); // Verwenden Sie die Methode hinzufügen, um 5 und 7 zusammen hinzuzufügen
Konsole.WriteLine ($ "result1: result1"); // geben das Ergebnis der Zugabe zur Konsole aus
int result2 = calc.Subtrahieren (10, 3); // Verwenden Sie die Subtrahetmethode, um 3 von 10 zu subtrahieren
Konsole.WriteLine ($ "result2: result2"); // geben das Ergebnis der Subtraktion in die Konsole aus
In diesem Beispiel wird die Taschenrechnerklasse mit einem privaten Konstruktor und einem statischen Instanzfeld definiert. Der private Konstruktor verhindert, dass die Klasse von außerhalb der Klasse selbst instanziiert wird, während das statische Instanzfeld sicherstellt, dass nur eine Instanz der Klasse gleichzeitig existieren kann.
Die Taschenrechnerklasse enthält auch eine Instanzeigenschaft, die ein neues Taschenrechnerobjekt erstellt, wenn man noch nicht existiert und es zurückgibt. Wenn die Instanzeigenschaft zum ersten Mal aufgerufen wird, erstellt sie ein neues Taschenrechnerobjekt und weist sie dem Feld Instanz zu. Nachfolgende Anrufe an die Instanzeigenschaft geben einfach das vorhandene Taschenrechnerobjekt zurück.
Die Taschenrechnerklasse umfasst auch Methoden hinzufügen und subtrahieren, die grundlegende arithmetische Operationen durchführen und das Ergebnis zurückgeben. Diese Methoden werden nur als Beispiel für die Art der Funktionalität enthalten, die die Taschenrechnerklasse liefern könnte.
Schließlich enthält die Programmklasse eine Hauptmethode, die eine Instanz der Taschenrechnerklasse unter Verwendung der Instanzeigenschaft erstellt und die Methoden hinzufügen und subtrahieren, um einige einfache Berechnungen durchzuführen. Die Ergebnisse dieser Berechnungen werden dann mit der Konsole an die Konsole ausgegeben.Writeline -Methode.
Wenn wir versuchen, eine neue Instanz der Taschenrechnerklasse mit dem Standardkonstruktor zu erstellen. Dies funktioniert nicht, da der Konstruktor der Taschenrechnerklasse privat ist und verhindert, dass neue Instanzen außerhalb der Klasse erstellt werden.
Um zu demonstrieren, dass ich eine neue Instanz der Taschenrechnerklasse unter Verwendung der Instanzeigenschaft der Klasse erstellt habe, und in der Ausgabe ist ein Fehler, der angibt, dass diese Klasse aufgrund ihres Schutzniveaus nicht zugänglich ist:
Durch das Nachweisen, dass neue Instanzen durch das Singleton -Muster in C#abgelehnt werden, zeigt dieses Beispiel, wie das Singleton -Muster sicherstellt, dass nur eine Klasseninstanz im gesamten Programm erstellt und gepflegt wird.
Abschluss
Das Singleton -Muster wird häufig in Situationen verwendet, in denen ein einzelnes Objekt Aktionen über das System koordinieren muss, z. B. einen Protokollierungsdienst oder eine Datenbankverbindung. Das Muster wird mit einem privaten Konstruktor und einer statischen Eigenschaft implementiert, die eine einzelne Instanz der Klasse zurückgibt. Dieser Artikel enthält eine detaillierte Erklärung zu diesem Muster.