22. Januar 2013

Entwurfsmuster: Proxy

Der Begriff eines Proxys bedeutet so viel wie "Stellvertreter", was dem Prinzip des gleichnamigen Strukturmusters entspricht. Ein Proxy fungiert dabei als ein Platzhalter für ein anderes Objekt und leitet Zugriffe auf dieses weiter. Dies führt dazu, dass das originale Objekt hinter dem Proxy-Objekt versteckt wird. Dessen Aufgabe ist es nicht, neue Eigenschaften oder Funktionalitäten hinzuzufügen, sondern den Zugriff auf das Original für den Benutzer zu erleichtern. Der Proxy stellt also eine Art intelligenten "Zeiger" dar, der je nach Bedarf angepasst werden kann.

Umgesetzt wird ein solcher Proxy, indem er die selbe Schnittstelle implementiert, wie das Objekt, als dessen Platzhalter er fungiert. Für die Delegation der Methodenaufrufe, die an den Proxy erfolgen, verfügt dieser über eine Referenz auf das Original. Das unter stehende Klassendiagram verdeutlicht diesen Zusammenhang:

Zusammenspiel der Klassen des Proxy-Entwurfsmusters

Vorteile:
  • Ein Proxy kann Aspekte implementieren, die über die Verantwortlichkeit der Originals hinaus gehen. Dazu gehören technische Aspekte wie z.B. Caching, Sicherheitsabfragen, Pooling oder Logging. 
Nachteile:
  • Für jede Methode des Originals muss der Proxy eine Methode mit der selben Signatur anbieten, was zu Redundanz führen kann, falls keine zusätzliche Funktion vom Proxy umgesetzt wird. 

Keine Kommentare:

Kommentar veröffentlichen