Proxy-, Dekorations-, Adapter- und Brückenmuster

Proxy-, Decorator-, Adapter- und Bridge-Muster

 

1. Einführung

In diesem Artikel konzentrieren wir uns auf strukturelle Entwurfsmuster in Java - und erläutern, was dies und einige grundlegende Unterschiede zwischen diesen sind.

2. Strukturelle Entwurfsmuster

Gemäß der Gang Of Four (GoF) können Entwurfsmuster in drei Typen eingeteilt werden:

  1. Schöpferisch

  2. Strukturelle

  3. Verhaltens

Einfach ausgedrückt, beschäftigen sich Strukturmuster mit der Zusammensetzung von Klassen und Objekten. Sie bieten verschiedene Möglichkeiten zur Verwendung der Objektzusammensetzung und -vererbung, um eine Abstraktion zu erstellen.

3. Proxy-Muster

Mit diesem Muster istwe create an intermediary that acts as an interface to another resource, z. B. eine Datei, eine Verbindung. Dieser sekundäre Zugriff bietet einen Ersatz für die reale Komponente und schützt sie vor der zugrunde liegenden Komplexität.

Ein detailliertes Beispiel für das Muster finden Sie im entsprechenden Beitrag:The Proxy Pattern in Java.

Wichtige Differenzierungspunkte:

  • Der Proxy bietet dieselbe Schnittstelle wie das Objekt, auf das er verweist, und ändert die Daten in keiner Weise. Dies steht im Gegensatz zu Adapter- und Decorator-Mustern, die die Funktionen bereits vorhandener Instanzen ändern bzw. dekorieren

  • Der Proxy verfügt normalerweise zur Kompilierungszeit über die Informationen zum eigentlichen Thema, während Decorator und Adapter zur Laufzeit injiziert werden und nur die Benutzeroberfläche des tatsächlichen Objekts kennen

4. Dekorateur Muster

This pattern is useful for enhancing the behavior of an object. Eine detaillierte Übersicht finden Sie im fokussierten Tutorial hier:Decorator Pattern in Java

Hauptunterschiede:

  • Obwohl Proxy- und Decorator-Muster ähnliche Strukturen aufweisen, unterscheiden sie sich in ihrer Absicht. Während der Hauptzweck von Proxy darin besteht, die Benutzerfreundlichkeit oder den kontrollierten Zugang zu erleichtern, bringt ein Dekorateur zusätzliche Verantwortlichkeiten mit sich

  • Sowohl Proxy- als auch Adaptermuster enthalten einen Verweis auf das ursprüngliche Objekt

  • Alle Dekorateure aus diesem Muster können rekursiv verwendet werden, unendlich oft, was bei anderen Modellen nicht möglich ist

5. Adaptermuster

The Adapter pattern is used for connecting two incompatible interfaces that otherwise cannot be connected directly. Ein Adapter umschließt eine vorhandene Klasse mit einer neuen Schnittstelle, damit sie mit der benötigten Schnittstelle kompatibel wird.

Eine detaillierte Beschreibung und Implementierung finden Sie im entsprechenden Beitrag:Adapter Pattern in Java

Die Hauptunterschiede zwischen Adapter- und Proxy-Mustern sind:

  • Während der Proxy dieselbe Schnittstelle bietet, bietet der Adapter eine andere Schnittstelle, die mit seinem Client kompatibel ist

  • Das Adaptermuster wird verwendet, nachdem die Anwendungskomponenten so entworfen wurden, dass wir sie verwenden können, ohne den Quellcode zu ändern. Dies steht im Gegensatz zum Brückenmuster, das verwendet wird, bevor die Komponenten entworfen werden.

6. Brückenmuster

The Bridge pattern is used to decouple an abstraction from its implementation, so dass die beiden unabhängig voneinander variieren können.

Dies bedeutet, eine Brückenschnittstelle zu erstellen, die OOP-Prinzipien verwendet, um Verantwortlichkeiten in verschiedene abstrakte Klassen aufzuteilen.

Eine detaillierte Beschreibung und Implementierung finden Sie im entsprechenden Beitrag:Bridge Pattern in Java

Key Points of Differentiation:

  • Ein Brückenmuster kann nur implementiert werden, bevor die Anwendung entworfen wurde.

  • Ermöglicht die unabhängige Änderung einer Abstraktion und Implementierung, während ein Adaptermuster die Zusammenarbeit inkompatibler Klassen ermöglicht

7. Fazit

In diesem Artikel haben wir uns auf das strukturelle Entwurfsmuster und die Unterschiede zwischen einigen seiner Typen konzentriert.

Wie immer finden Sie die vollständige Implementierung dieses Tutorials inover on Github.