Brücke (Entwurfsmuster)
Eine Brücke (engl. Bridge) ist in der Softwareentwicklung ein Entwurfsmuster und gehört zur Kategorie der Strukturmuster (Structural Patterns). Das Muster dient zur Trennung der Implementation von ihrer Abstraktion (Schnittstelle), wodurch beide unabhängig voneinander verändert werden können.
Es ist ein Entwurfsmuster der sogenannten GoF-Muster (siehe Viererbande).
__TOC__
Verwendung
Problem
Normalerweise wird eine Implementation durch Vererbung der Abstraktion realisiert. Dies kann jedoch dazu führen, dass in der Vererbungshierarchie sowohl Implementationen als auch andere abstrakte Klassen zu finden sind. Dies macht die Vererbungshierarchie unübersichtlich und schwer wartbar.
Lösung
Werden die abstrakten Klassen und die Implementationen in zwei verschiedene Hierarchien verwaltet, so gewinnt erstens die Übersichtlichkeit und zweitens wird die Anwendung unabhängig von der Implementation.
Allgemeine Verwendung
Eine Brücke findet Anwendung, wenn
* Abstraktion und Implementation erweiterbar sein sollen,
* eine dauerhafte Verbindung zwischen Abstraktion und Implementation verhindert werden soll,
* Änderungen der Implementation ohne Auswirkungen für den Klienten sein sollen,
* die Implementation vor dem Klienten verborgen bleiben soll oder
* die Implementation von verschiedenen Klassen gleichzeitig genutzt werden soll.
UML-Diagramm
Akteure
* Abstraktion (im Beispiel: List)
** definiert die Schnittstelle der Abstraktion
** hält eine Referenz zu einem Implementierer
* SpezAbstraktion (im Beispiel: SortedList)
** erweitert die Schnittstelle
* Implementierer (im Beispiel: ListImpl)
** definiert die Schnittstelle der Implementation
** kann sich von Schnittstelle der Abstraktion erheblich unterscheiden
* KonkrImplementierer (im Beispiel: ArrayList)
** enthält eine konkrete Implementation durch Implementation der Schnittstelle
Vorteile
* Abstraktion und Implementation werden entkoppelt.
* Die Implementation ist während der Laufzeit dynamisch änderbar.
* Die Erweiterbarkeit von Abstraktion und Implementation ist verbessert.
* Durch Angabe eines Parameters bei der Erzeugung einer Abstraktion kann die Implementation gewählt werden.
* Für den Klienten wird die Implementation vollständig versteckt.
* Vermeidung einer starken Vergrößerung der Anzahl der Klassen.
Nachteile
Beispiel
...
Verwandte Entwurfsmuster
Zum Erzeugen der Brücke kann eine Abstrakte Fabrik verwendet werden.
Ein Adapter ist der Brücke ähnlich. Jedoch dient der Adapter einer nachträglichen Anpassung einer Klasse an eine Anwendung während die Brücke eine gezielte Designentscheidung ist.

