27.10.2021 |

Proxy

Proxy Pattern

Das "proxy pattern" (Stellvertreter) ist aus der Kategorie der Strukturmuster und überträgt die Steuerung eines Objektes auf ein vorgelagertes Stellvertreterobjekt. Das Proxy Pattern bietet also die Kontrolle über die Objekterzeugung des Subjekts und dessen Zugriff darauf. Des Weiteren hat das Proxy Pattern den Vorteil, dass der Client nicht die Kontrolle des Objekts bemerkt und das es auch für Lazy-Loading genutzt werden kann (das eigentliche Objekt ist noch nicht im Speicher verfügbar).

Quelle: Wikipedia

Klient: Der Klient stellt das Objekt dar, welches durch den Stellvertreter auf das reale Subjekt zugreift.

Proxy: Der Stellvertreter bietet nach außen hin eine zum realen Subjekt identische Schnittstelle.

Subjekt: Das Subjekt definiert die gemeinsame Schnittstelle von Stellvertreter und realem Subjekt.

RealesSubjekt: Das reale Subjekt ist das durch den Stellvertreter repräsentierte Objekt.

Verwendung und Beispiel

Proxies können den Zugang zu Objekten kontrollieren, bevor sie die Methodenaufrufe an das Subjekt delegieren.

Das Prinzip findet man auch in der realen Welt. Wenn beim Einkaufen auf Bargeld verzichtet und eher eine Kreditkarte oder ähnliches verwendet wird, dann ist das ein Proxy! Der Verkäufer bekommt sein Geld allerdings keinen direkten Zugriff auf das eigene Konto.

Nachteile

  • Je nach Implementierung kann sich die Antwortzeit verzögern.
  • Es wird eine weitere Abstraktionsschicht eingefügt was zur Steigerung der Komplexität führen kann.
  • Es müssen alle von der Schnittstelle definierten Methoden für das Proxy erstellt und an das Subjekt delegiert werden.

Abgrenzungen zu anderen Pattern

Dekorierer-Pattern: Ähnlich ABER es fügt zusätzliches Verhalten hinzu!

Adapter-Pattern: Verändert die Schnittstellendefinition, aber nicht die Geschäftslogik.

Facaden-Pattern: Kontrolliert nicht den Zugriff auf das Objekt, sondern stellt eine andere Schnittstelle bereit.

Zur Übersicht
Patrick Schaper

Mehr vom Devsquad...

Sven Röttering

Flyweight

Lucas Meurer

Next.js 12

Hallo, ich bin Jörg Herbst!

Ich bin der CEO von newcubator und freue mich über jede Nachricht!

* Pflichtfeld