Entwurfsmuster / Design Pattern: Einzelstück (Singleton)
Das Singleton ist ein weiteres Beispiel aus der Kategorie der erzeugenden Muster.
Zweck
Das Muster Einzelstück stellt sicher, dass von einer Klasse nur eine einzige Instanz existiert, und bietet einen globalen Zugriffsmechanismus auf diese Instanz an.
Anwendbarkeit
Man kann das Muster Einzelstück zur Lösung folgender Probleme benutzen:
- Es darf nur eine einzige Instanz einer Klasse geben. Diese Instanz muss über einen wohldefinierten Zugriffsmechanismus ansprechbar sein.
- Die Klasse der einzigen Instanz soll durch Unterklassenbildung erweiterbar sein, ohne dass Dienstnutzer davon betroffen sind.
Abbildung: Ein einfaches Beispiel eines Singleton
Beteiligte Klasse
Die Klasse Einzelstück definiert die Klassenoperation (statische Funktion) gibEinzigeInstanz(), über welche Dienstnutzer auf ihre einzige Instanz zugreifen können. Sie kann verantwortlich für die Erzeugung der einzigen Instanz sein, muss es aber nicht.
Konsequenzen
Das Muster Einzelstück hat folgende Vorteile:
- Der Zugriff auf die einzige Instanz erfolgt nur über die entsprechende Klassenoperation und kann somit kontrolliert und beschränkt werden.
- Der Namensraum wird nicht mit “global“ sichtbaren Variablen überflutet, in denen jeweils die Instanzen verschiedener Einzelstücke vorgehalten werden.
- Es erlaubt die Änderung der Operationen in Unterklassen, und die einzige Instanz kann zur Laufzeit durch die Instanz einer Unterklasse des Einzelstücks ersetzt werden.
- Es erlaubt auch eine variable Anzahl von Instanzen des Einzelstücks, indem einfach die Klassenoperation gibEinzigeInstanz() entsprechend geändert wird.
- Der Einsatz einer einzigen Instanz zusammen mit entsprechenden Instanzoperationen ist flexibler als die Realisierung des Einzelstücks (und der Operationen der einzigen Instanz) rein mit Klassenoperationen.
Erstens ist die Erweiterung auf mehrere Instanzen bei der Realisierung über Klassenoperationen nicht mehr elementar.
Zweitens können (zumindest im Fall von C++) Klassenmethoden nicht in Unterklassen überschrieben werden, was die Erweiterung des Einzelstücks durch Unterklassenbildung erschwert.
Quelle
Erich Gamma, Richard Helm, Ralph Johnson und John M. Vlissides Design Patterns — Elements of Reusable Object-Oriented Software Addison Wesley, Reading, MA, 1994
Leave Entwurfsmuster / Design Pattern: Einzelstück (Singleton) to:
Read more #deutsch posts
Best Posts From ozelot47
We have not curated any of ozelot47's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From ozelot47
- Ion Fury, Level 5: Reformation Plaza
- Eine Ampelblume im Garten
- Ion Fury, Level 4: Cultural Divide
- Ion Fury, Level 3: Fan Service
- Blaubeeren sammeln
- Ion Fury, Level 2: Trouble in Paradise
- Die Gammafunktion mit Beispiel
- Integration durch Substitution
- Eine transzendente Gleichungen lösen
- Ion Fury, Level 1: The All-Seeing Eye
- Anwendung der Lambertsche W-Funktion
- Shadow Corridor 2 雨ノ四葩 : Reaching 100% and the Gallery
- n-fache partielle Integration mit der DI-Methode
- Shadow Corridor 2 雨ノ四葩 : God Tree and true ending
- Shadow Corridor 2 雨ノ四葩 : Sea of Reminiscene and normal ending
- Teiche im Wald
- Shadow Corridor 2 雨ノ四葩 : Sea of Trees Complex
- Daten sicher unter Linux löschen
- Shadow Corridor 2 雨ノ四葩 : Glass Building
- Shadow Corridor 2 雨ノ四葩 : Shinshi Boss Fight (Deluge)