Privacy Policy Cookie Policy Terms and Conditions Stellvertreter (Entwurfsmuster) - Wikipedia

Stellvertreter (Entwurfsmuster)

aus Wikipedia, der freien Enzyklopädie

Der Proxy, auch Stellvertreter genannt, ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Das Muster verschiebt die Kontrolle über ein Objekt auf ein vorgelagertes Stellvertreterobjekt. Es ist ein Entwurfsmuster der sogenannten Viererbande.

Inhaltsverzeichnis

[Bearbeiten] Verwendung

Der Stellvertreter hat sich in verschiedenen Anwendungsfällen als nützlich erwiesen. Je nach Verwendung unterscheidet man verschiedene Arten von Stellvertreterobjekten.

  • Ein Remote-Proxy ist ein lokaler Stellvertreter für ein Objekt in einem anderen Adressraum. Er wird beispielsweise in Netzwerkanwendungen oder bei DCOM verwendet.
  • Ein virtueller Stellvertreter dient der Verzögerung teurer Operationen auf den Zeitpunkt des tatsächlichen Bedarfs. Typische solcher teueren Operationen sind die Erzeugung oder die Veränderung eines komplexen Objektes.
  • Ein Schutzproxy setzt Zugriffsrechte auf ein Objekt durch. Dies ist insbesondere dann nützlich, wenn unterschiedliche Objekte verschiedene Zugriffsrechte auf das zu schützende Objekt haben sollen. Ein konkretes Beispiel für Schutzproxys sind Kernel-Proxys, welche den Zugriff auf Betriebssystemobjekte kontrollieren.
  • Stellvertreter kommen ebenfalls zum Einsatz, um an den eigentlichen Zugriff auf das Objekt weitere Operationen zu binden. Das Objekt bleibt damit von diesen Operationen unabhängig. Für diese Art von Stellvertretern hat sich der Begriff der Smart References etabliert. Das Zählen von Referenzen und Persistenzoperationen sind typische Anwendungsfälle.

[Bearbeiten] UML-Diagramm

Bild:Stellvertreter.png



Bild:Proxy flexibel.png

[Bearbeiten] Akteure

  • Stellvertreter
    • verwaltet Referenz auf reales Subjekt
    • bietet identische Schnittstelle zum realen Subjekt
    • kontrolliert Zugriff
    • eventuell verantwortlich für dessen Erzeugung oder Löschung
    • Verantwortlichkeiten aus der Art des Stellvertreters heraus
  • Subjekt
    • Definition der gemeinsamen Schnittstelle von Stellvertreter und realem Subjekt
    • Verwendung von Stellvertretern anstatt realer Subjekte dadurch möglich
  • RealesSubjekt
    • das durch den Stellvertreter repräsentierte Objekt



[Bearbeiten] Beispiel

Passwortschutz von einigen Methoden innerhalb einer Klasse, z. B. Klasse Konto (mit Methoden einzahlen und auszahlen).

Der Proxy ist eine neue Klasse (KontoMitPasswort) -> Assoziation zur alten Konto-Klasse. Die Methoden in der Proxyklasse fragen den Benutzer nach einem Passwort und rufen dann die Methoden der Klasse Konto auf (bei richtigem Passwort).

Java RMI ist eine Möglichkeit, auf entfernte (= in einer anderen JVM laufende) Objekte zuzugreifen, wobei sich der Zugriff nicht von dem auf lokale Objekte unterscheidet. Dies wird durch so genannte Stubs und Skeletons erreicht, die entsprechend dem Proxy-Entwurfsmuster die Schnittstelle des jeweils entsprechenden Kommunikationspartners implementieren und den Methodenaufruf an diesen (meist über ein Netzwerk) weiterleiten.

[Bearbeiten] Verwandte Entwurfsmuster

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -