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

in GEMS4 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:  

Your post has been curated by us! Received 25.00% upvote from @opb. Do consider delegate to us to help support our project.

This bot is able to generate curation reward of
250% more
than it's initial upvote value!

Do join our discord channel to give us feedback, https://discord.gg/bwb2ENt

* This bot is upvoting based on the criteria : 1. Not plagiarised, 2. Post > 5min, 3. Author reputation > 25
Do upvote this commment if you 💚 our service :)

Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.030
BTC 67918.33
ETH 3740.37
USDT 1.00
SBD 3.69