- Stellvertreter (Entwurfsmuster)
-
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 dient zum Verschieben der Kontrolle über ein Objekt auf ein vorgelagertes Stellvertreterobjekt. Es ist ein Entwurfsmuster der sogenannten Viererbande.
Ein Proxy in seiner allgemeinsten Form ist eine Klasse, die als Schnittstelle zu einem anderen „Subjekt“ auftritt. Dieses Subjekt kann beispielsweise eine Netzwerkverbindung, ein großes Objekt im Speicher, eine Datei oder eine andere Ressource sein. Als Stellvertreter dieses Subjektes kann der Proxy die Erzeugung des Subjektes sowie den Zugriff darauf steuern.
Inhaltsverzeichnis
Verwendung
Der Stellvertreter hat sich in verschiedenen Anwendungsfällen als nützlich erwiesen. Je nach Verwendung unterscheidet man verschiedene Arten von Stellvertreterobjekten:
Als Remote-Proxy wird ein lokaler Stellvertreter für ein Objekt in einem anderen Adressraum bezeichnet. 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 teuren Operationen sind die Erzeugung oder die Veränderung eines komplexen Objektes.
Zur Durchsetzung von Zugriffsrechten auf ein Objekt kommt ein Schutzproxy zum Einsatz. Dies ist insbesondere dann nützlich, wenn unterschiedliche zugreifende 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.
UML-Diagramm
Klient
Der Klient stellt das Objekt dar, welches durch den Stellvertreter auf das reale Subjekt zugreift.
Stellvertreter
Der Stellvertreter bietet nach außen hin eine zum realen Subjekt identische Schnittstelle. Er verwaltet eine Referenz auf dieses und ist eventuell auch verantwortlich für dessen Erzeugung und Löschung. Weitere Verantwortlichkeiten ergeben sich aus der Art des Stellvertreters.
Subjekt
Das Subjekt definiert die gemeinsame Schnittstelle von Stellvertreter und realem Subjekt. Dadurch wird die Verwendung von Stellvertretern anstatt realer Subjekte möglich.
Reales Subjekt
Das reale Subjekt ist das durch den Stellvertreter repräsentierte Objekt.
Beispiele
Passwortschutz von einigen Methoden innerhalb einer Klasse, z. B. Klasse
Konto
(mit Methodeneinzahlen
undauszahlen
).Der Proxy ist eine neue Klasse (
KontoMitPasswort
) → Assoziation zur altenKonto
-Klasse. Die Methoden in der Proxyklasse fragen den Benutzer nach einem Passwort und rufen dann die Methoden der KlasseKonto
auf (bei richtigem Passwort).Java RMI ist eine Möglichkeit, auf entfernte (sprich 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.
Weiteres Anwendungsbeispiel
In Situationen, in denen mehrere Kopien eines komplexen Objektes existieren müssen, kann das Proxy-Entwurfsmuster mit dem sogenannten Flyweight-Entwurfsmuster kombiniert werden, um den Speicherbedarf zu reduzieren. Dabei wird typischerweise nur eine Instanz des komplexen Objektes erzeugt, sowie mehrere kleinere Proxy-Objekte, die auf dieses Objekt verweisen und als Schnittstelle bzw. Stellvertreter agieren. Alle Operationen auf die Proxy-Objekte werden an das ursprüngliche Objekt weitergeleitet. Existieren keine Instanzen des Proxys mehr, so kann auch das ursprüngliche Objekt aus dem Speicher entfernt werden.
Verwandte Entwurfsmuster
Erzeugungsmuster: Abstrakte Fabrik | Singleton | Builder | Fabrikmethode | Prototyp
Strukturmuster: Adapter | Brücke | Decorator | Fassade | Flyweight | Kompositum | Stellvertreter
Verhaltensmuster: Observer | Visitor | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette
(Klassenmuster sind kursiv dargestellt)
Wikimedia Foundation.
Schlagen Sie auch in anderen Wörterbüchern nach:
Stellvertreter (Begriffsklärung) — Stellvertreter steht für: Stellvertreter, Person mit der Befugnis, eine höhere Position in deren Vakanzfall temporär zu übernehmen Stellvertreter (Entwurfsmuster), Entwurfsmuster in der Softwarearchitektur die Stellvertretung im rechtlichen Sinne … Deutsch Wikipedia
Entwurfsmuster (Buch) — Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software, ISBN 3 8273 2199 9 (Originaltitel: Design Patterns. Elements of Reusable Object Oriented Software.) ist ein 1994 von Erich Gamma, Richard Helm, Ralph Johnson und John… … Deutsch Wikipedia
Entwurfsmuster — (engl. design patterns) sind bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme in Softwarearchitektur und Softwareentwicklung. Sie stellen damit eine wiederverwendbare Vorlage zur Problemlösung dar, die in einem bestimmten… … Deutsch Wikipedia
Beobachter (Entwurfsmuster) — Der Observer (Beobachter, Listener) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Verhaltensmuster (Behavioural Patterns). Es dient zur Weitergabe von Änderungen an einem Objekt an von diesem… … Deutsch Wikipedia
Bridge (Entwurfsmuster) — Eine Brücke (engl. Bridge) ist in der Softwareentwicklung ein Entwurfsmuster und gehört zur Kategorie der Strukturmuster (Structural Patterns). Das Muster dient zur Trennung der Implementierung von ihrer Abstraktion (Schnittstelle), wodurch beide … Deutsch Wikipedia
Builder (Entwurfsmuster) — Der Erbauer (englisch Builder) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zur Kategorie der Erzeugungsmuster (Creational Patterns). Es trennt die Konstruktion komplexer Objekte von deren Repräsentationen, wodurch… … Deutsch Wikipedia
Composite (Entwurfsmuster) — Das Kompositum (engl. Composite) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Es wird angewendet um Teil Ganzes Hierarchien zu repräsentieren, indem Objekte… … Deutsch Wikipedia
Einzelstück (Entwurfsmuster) — Das Singleton (auch Einzelstück genannt) ist ein in der Softwareentwicklung eingesetztes Entwurfsmuster und gehört zur Kategorie der Erzeugungsmuster (engl. Creational Patterns). Es verhindert, dass von einer Klasse mehr als ein Objekt erzeugt… … Deutsch Wikipedia
Facade (Entwurfsmuster) — Fassade (engl. facade) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Es bietet eine einheitliche und meist vereinfachte Schnittstelle zu einer Menge von… … Deutsch Wikipedia
Prototype (Entwurfsmuster) — Ein Prototyp (engl. Prototype) ist ein Entwurfsmuster (design pattern) aus dem Bereich der Softwareentwicklung und gehört zur Kategorie der Erzeugungsmuster (Creational Patterns). Neue Instanzen werden aufgrund prototypischer Instanzen… … Deutsch Wikipedia