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  | 
  |  |