Klassifizierung |
objektbasiertes Strukturmuster
|
| |
Zweck |
Kontrolle des Zugriffs auf ein Objekt mit Hilfe eines
vorgelagerten Stellvertreterobjekts
|
| |
Alias |
Surrogat
|
| |
Motivation |
Berechnungen verzögern
Information auf Verlangen berechnen
Caches implementieren
kontrollierter Zugriff
synchronisierter Zugriff auf Objekte,
in Java: synchronized Methoden und Blöcke
überwachen von Aktionen
|
| |
Beispiel |
|
| |
Anwendbarkeit |
|
Remote Proxy |
Lokaler Stellvertreter für ein
Objekt in einem anderen Adressraum
DB-Objekt
|
Virtual Proxy |
Erzeugung auf Verlangen (on demand)
|
Cache |
Beispiel
Ergebnisse von Berechnungen merken
|
Zugriffsschutz
|
|
Trace Proxy |
|
Logging Proxy |
Protokollieren von Zugriffen
|
| |
Struktur |
Strukturdiagramm
|
| |
Teilnehmer |
|
Subjekt |
abstrakt
definiert gemeinsame Schnittstelle
|
KonkretesSubjekt |
konkret
Objekt, das die Arbeit macht
|
Proxy |
konkret
verwaltet Referenz auf ein echtes Objekt
identische Schnittstelle
kontrollierter Zugriff
zuständig für das Erzeugen und Löschen
object sharing: gemeinsames Nutzen von Daten (Referenzzähler)
|
| |
Konsequenzen |
|
|
zusätzliche Indirektstufe
|
|
flexibel: remote, cache, Schutz, ...
|
|
copy on write mit Referenzzähler
|
|
proxies können in Kaskaden zusammengeschaltet werden:
trace --> cache --> echtes Objekt
|
| |
Beispiele |
Java Beispiel: cache für Funktionswerte
|
| |
Bekannte Verwendungen |
|
|
WWW proxy
|
|
caches
|
|
Zugriffsschutz
|
| |
verwandte Muster |
|
|
Unterschied: unterschiedliche Schnittstellen |
| |
|
ähnliches Muster aber anderer Zweck |
| |
|
allgemeiner: nicht nur eine Referenz
sondern mehrere |
| |