Entwurfsmuster in PHP – Teil IV
von Matthias Kannengiesser
Strukturmuster befassen sich mit der Komposition von unterschiedlichen Objekten, um eine größere und flexiblere Struktur zu entwickeln, die leicht um neue Funktionen erweitert werden kann.
Pattern: Adapter
Ziel: Passt eine Schnittstelle an die vom Client erwartete Schnittstelle an. Objekte können andere Objekte nutzen, indem man ein Adapter-Objekt dazwischenschaltet.
Auswirkungen: Ursprünglich nicht kompatible Klassen werden kompatibel. Die Zielklasse kann trotz unterschiedlicher Nutzung unverändert bleiben. Schnittstellen werden entkoppelt. Die Wiederverwendbarkeit ist erhöht. Die Spezialisierung der adaptierten Klassen ist schwerer. Die Verwendung des Musters kann zu recht unterschiedlichem Aufwand führen.
Pattern: Bridge (Brücke)
Ziel: Entkoppelt eine Abstraktion von ihrer Implementierung, sodass beide unabhängig voneinander variiert werden können. Bildet eine Brücke zwischen zwei Klassenhierarchien.
Auswirkungen: Die Implementierung kann dynamisch ausgetauscht werden. Trennung von Interface- und Implementierungshierarchien.
Pattern: Composite (Kompositum)
Ziel: Fügt mehrere Objekte zu einer Baumstruktur zusammen, um Kompositionen von Objekten einheitlich zu behandeln.
Auswirkungen: Neue Komponenten können leicht eingefügt werden. Der Entwurf wird sehr schnell allgemein.
Pattern: Decorator (Dekorateur)
Ziel: Erweitert Objekte zur Laufzeit um neue Funktionalitäten.
Auswirkungen: Die Klassen werden schlanker. Das Muster schafft größere Flexibilität als der Einsatz von Vererbung. Die Anzahl der Klassen in einer Anwendung wird erhöht.
Pattern: Facade (Fassade)
Ziel: Bietet eine abstrakte Schnittstelle, die die Verwendung eines Subsystems vereinfacht.
Auswirkungen: Reduziert die Anzahl der Klassen, die vom Client verwendet werden müssen. Fördert lose Koppelung zwischen den Subsystemen und den Klassen, die diese nutzen.
Pattern: Flyweight (Fliegengewicht)
Ziel: Nutzt Gemeinsamkeiten von Objekten und lagert diese in zusätzliche Objekte aus, um eine große Anzahl von Objekten effizient verwenden zu können.
Auswirkungen: Führt zur Redundanzreduzierung in der Datenhaltung. Führt zu kompakten und speichersparenden Objekten.
Pattern: Proxy (Stellvertreter)
Ziel: Kontrolliert den Zugriff auf ein Objekt mithilfe eines Stellvertreters. Zugriff auf ein Objekt auf einem anderen Server (Remote-Proxy). Erzeugen des Objekts beim ersten Zugriff (virtueller Proxy). Durchführen von Verwaltungsaufgaben (Schutz-Proxy).
Auswirkung: Führt Indirektion beim Zugriff auf Objekte ein.
Tipp: Sobald Sie mit den Entwurfsmustern dieser Gruppe vertraut sind, stehen Ihnen bereits die wichtigsten Werkzeuge zur Verfügung, um durch Komposition eine flexible Architektur von unterschiedlichen Objekten zu erschaffen.
Dieser Abschnitt wurde dem Buch “PHP 5 – Objektorientierte Programmierung” von Matthias Kannengiesser entnommen, das im Franzis Verlag erschienen ist. Sie können es hier direkt bestellen.













[...] der in Teil III und Teil IV dieser Reihe vorgestellten Erzeugungs- und Strukturmuster sind Sie in der Lage, effizient Objekte [...]