Entwurfsmuster / Design Pattern: Die Fassade (Façade)

in StemSocial4 years ago

Als zweite Gruppe von Entwurfsmustern gibt es die Strukturmuster. Diese beschreiben, wie Klassen bzw. ihre Instanzen zu größeren Strukturen zusammengesetzt werden können. Im folgenden wird die Fassade näher vorgestellt.

Zweck

Stellt eine einheitliche Schnittstelle (Interface) für eine Menge von Schnittstellen zur Verfügung. Führt eine Strukturierungsebene oberhalb von Klassen ein.

Motivation

Ein häufiges Ziel im Entwurf ist die Minimierung der Abhängigkeiten zu einer Gruppe von eng zusammenarbeitenden Klassen (einem Cluster). Ein Weg zur Erreichung dieses Zieles ist der Einsatz eines Fassaden-Objekts, welches eine einfache Schnittstelle zu der Funktionalität des Clusters anbietet.

Um den Dienstnutzern eine Schnittstelle mit höherem Abstraktionsgrad anzubieten, enthält der "Kompiler-Cluster" auch eine Klasse Kompiler. Diese Klasse definiert eine Schnittstelle zur Funktionalität des Kompilers. Die Klasse Kompiler wirkt dabei wie eine Fassade: sie bietet den Dienstnutzern eine einzige, einfache Schnittstelle zu den Klassen des Kompiler-Clusters an. Sie fasst die Klassen zusammen, welche die Funktionalität des Kompilers realisieren, ohne sie vollständig zu verbergen. Die Kompiler-Fassade macht den meisten Programmierern das Leben durch das Anbieten von Standardfunktionalitäten einfacher, ohne spezielle Funktionalitäten vor jenen zu verbergen, die sie benötigen.

3fassade1.png
Abbildung 1: Der Aufbau einer Fassade

3fassade2.png
Abbildung 2: Ein kleines Beispiel für die Verwendung einer Fassade

Anwendbarkeit

Man kann das Muster Fassade unter folgenden Bedingungen benutzen:

  • Ein komplexer Cluster soll eine einfache Schnittstelle erhalten. Cluster werden häufig im Lauf ihrer Entwicklung komplexer. Die meisten Muster führen durch ihre Anwendung zu mehr und kleineren Klassen. Die Anwendung des Musters Fassade macht die Cluster besser wiederverwendbar und adaptierbar, gleichzeitig wird ihre Nutzung aber für jene schwieriger, die keine Adaptierung für ihre Aufgabenstellung benötigen. Eine Fassade bietet eine einfache Standardsicht des Clusters an, die für die meisten Dienstnutzer ausreicht.

  • Es existieren viele Abhängigkeiten zwischen den Dienstnutzern und den Implementierungsklassen einer Abstraktion. Man verwendet das Muster Fassade um die Abhängigkeiten zwischen den Dienstnutzern und dem Cluster in der Fassaden-Klasse zu konzentrieren und dadurch seine Unabhängigkeit und Portabilität zu erhöhen.

  • Dienstnutzer, die eine größere Flexibilität oder umfangreichere Funktionalität benötigen, müssen unter Umgehung der Fassade auf einzelne Klassen des Clusters zurückgreifen.

Konsequenzen

Das Muster Fassade hat folgende Vorteile:

  • Es trennt Dienstnutzer von Objekten eines Clusters und reduziert dadurch die Anzahl der Objekte, mit denen der Dienstnutzer zu tun hat. Dadurch wird die Benutzung des Clusters einfacher.
  • Es reduziert die Kopplung zwischen dem Dienstnutzer und den Objekten eines Clusters.
  • Es verhindert nicht die direkte Nutzung der Objekte des Clusters durch Anwendungen, falls dies notwendig ist. Man kann zwischen einer einfachen Benutzung und vollständigem Funktionsumfang wählen.

Quelle
[2] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal Pattern-Oriented Software Architecture — A System of Patterns J. Wiley & Sons, Chichester, 1996

Sort:  

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider supporting our funding proposal, approving our witness (@stem.witness) or delegating to the @stemsocial account (for some ROI).

Please consider using the STEMsocial app app and including @stemsocial as a beneficiary to get a stronger support. 
 

Du hast ein Upvote von mir bekommen, diese soll die Deutsche Community unterstützen. Wenn du mich unterstützten möchtest, dann sende mir eine Delegation. Egal wie klein die Unterstützung ist, Du hilfst damit der Community. DANKE!