Klassifizierung |
objektbasiertes
Erzeugungsmuster
|
| |
Zweck |
Absicherung, dass von einer Klasse genau ein
Objekt erzeugt wird und es einen globalen Zugriffspunkt auf
das Objekt gibt
|
| |
Motivation |
eine Fabrik für Objekte (Abstrakte Fabrik)
darf nur einmal existieren
|
| |
Beispiel |
EmptyTree-Klasse
für die Darstellung des leeren Baums
(aus Strukturmuster Kompositum).
|
| |
Anwendbarkeit |
|
|
genau ein Objekt
soll erzeugt werden können und an einer Stelle
zugreifbar sein
|
|
das Exemplar soll durch Unterklassenbildung
erweiterbar sein, ohne Klientencode zu modifizieren
|
| |
Struktur |
Strukturdiagramm
|
| |
Teilnehmer |
|
Singleton |
enthält globale Referenz auf ein Objekt
und Zugriffsfunktionen auf die Referenz
und auf die Daten
|
| |
Konsequenzen |
|
|
Zugriffskontrolle auf das Exemplar
|
|
eingeschränkter Namensraum
globale Variable im Namensraum der Klasse
|
|
durch Vererbung Funktionalität überschreibbar
|
| |
Implementierungs- Beispiele |
|
|
einfachste Java-Implementierung
keine Modifikation durch Vererbung möglich
|
|
eine etwas
trickreiche Implementierung, die Modifikation durch
Vererbung zulässt
|
|
dynamisches Laden und Erzeugen eines Singletons
besonders für eine Abstrakte Fabrik geeignet
|
| |
verwandte Muster |
|
Abstrakte Fabrik |
|
| |
Erbauer |
|
| |
Prototyp |
sind typische Kandidaten für Singleton-Implementierungen
|
| |