Fassade (Entwurfsmuster)

Fassade (englisch facade, auch façade geschrieben) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung, das zur Kategorie der Strukturmuster (engl. structural design patterns) gehört. Es bietet eine einheitliche und meist vereinfachte Schnittstelle zu einer Menge von Schnittstellen eines Subsystems.[1]

Wenn ein Subsystem viele technisch orientierte Klassen enthält, die selten von außen verwendet werden, hilft es, eine Fassade zu verwenden. Die Fassade ist eine Klasse mit ausgewählten Methoden, die eine häufig benötigte Untermenge an Funktionalität des Subsystems umfasst. Sie delegiert die Funktionalität an andere Klassen des Subsystems und vereinfacht dadurch den Umgang mit dem Subsystem.

Vorteile und Nachteile

Die Fassade fördert die lose Kopplung, weil sie das zugrunde liegende Subsystem versteckt, und senkt die Komplexität, da mehrere Schnittstellen zu einer zusammengefasst werden. Außerdem kann das Subsystem durch die lose Kopplung leichter erweitert werden.

Der Nachteil besteht darin, dass eine zusätzliche Indirektionsstufe eingeführt wird.

Beispiel

Die Standard-Bibliothek von Java enthält sehr viele Klassen für das Verarbeiten von Schriftarten und deren Darstellung als geometrische Figuren oder direkt als Pixel. Trotzdem kommen die meisten Java-Programmierer mit diesen Klassen nie in Kontakt, da die Standard-Bibliothek mit den Fassadenklassen Font und Graphics sehr einfachen Zugriff auf die wichtigsten Schriftart-Operationen gewährt.

Struktur

Facade
Die Fassade. Sie verweist auf die Klassen Class1, Class2 und Class3.
Clients
Die Objekte, welche die Fassade nutzen.

Verwandte Entwurfsmuster

Die abstrakte Fabrik (Abstract Factory, Kit) kann zusammen mit einer Fassade verwendet werden, um eine Schnittstelle zum Erzeugen von Systemobjekten unabhängig vom Subsystem anzubieten.

Der Vermittler (Mediator) steht genau wie die Fassade als Vermittler zwischen Klassen, um direkte Zugriffe zu vermeiden.

Der Adapter (Wrapper) stellt eine geänderte Schnittstelle auf eine existierende Klasse oder ein Subsystem bereit.

Business Delegate ist das Gegenstück zur Fassade auf der aufrufenden Komponente.

Literatur

  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Entwurfsmuster. Addison-Wesley Verlag, München 2004, ISBN 3-89319-950-0.
  • Bernd Brügge, Allen H. Dutoit: Objektorientierte Softwaretechnik: mit UML, Entwurfsmustern und Java - 2., überarbeitete Auflage, Addison-Wesley Verlag, 2004, ISBN 3-82737-082-5.
Commons: Fassade (Entwurfsmuster) – Sammlung von Bildern, Videos und Audiodateien
Wikibooks: Muster: Facade – Lern- und Lehrmaterialien
  • Einsteigerfreundliche Einführung in das Facade Design Pattern
  • Bericht der Privaten Fachhochschule Wedel über das Strukturmuster Fassade

Einzelnachweise

  1. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Entwurfsmuster. 5. Auflage. Addison-Wesley, 1996, ISBN 3-8273-1862-9, S. 212. 
VD
Entwurfsmuster
Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objektrelationale Abbildung

Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation

Nachrichtenübermittlungsmuster

Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator | Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus | Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker | Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model | Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator | Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger

Andere

Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object