Brücke (Entwurfsmuster)

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 Implementierung von ihrer Abstraktion (Schnittstelle), wodurch beide unabhängig voneinander verändert werden können. Es ist ein Entwurfsmuster der sogenannten GoF-Muster (siehe Viererbande).

Inhaltsverzeichnis

Problem

Normalerweise wird eine Implementierung durch Vererbung der Abstraktion realisiert. Dies kann jedoch dazu führen, dass in der Vererbungshierarchie sowohl Implementierungen als auch andere abstrakte Klassen zu finden sind. Dies macht die Vererbungshierarchie unübersichtlich und schwer zu warten.

Lösung

Werden die abstrakten Klassen und die Implementierungen in zwei verschiedenen Hierarchien verwaltet, so gewinnt erstens die Übersichtlichkeit und zweitens wird die Anwendung unabhängig von der Implementierung.

Lösung

Allgemeine Verwendung

Eine Brücke findet Anwendung, wenn sowohl Abstraktion als auch Implementierung erweiterbar sein sollen und eine dauerhafte Verbindung zwischen Abstraktion und Implementierung verhindert werden soll. Weiterhin wird sie angewandt, wenn Änderungen der Implementierung ohne Auswirkungen für den Klienten sein sollen, die Implementierung vor dem Klienten verborgen bleiben soll oder die Implementierung von verschiedenen Klassen gleichzeitig genutzt werden soll.

UML-Diagramm

UML-Diagramm: Brücke

Akteure

Die Abstraktion (im Beispiel: List) definiert einerseits die Schnittstelle der Abstraktion, andererseits hält sie eine Referenz zu einem Implementierer. Die SpezAbstraktion (im Beispiel: SortedList) erweitert die Schnittstelle. Der Implementierer (im Beispiel: ListImpl) definiert die Schnittstelle der Implementierung. Er kann sich dabei von Schnittstelle der Abstraktion erheblich unterscheiden. Der KonkrImplementierer (im Beispiel: ArrayList) enthält eine konkrete Implementierung durch Implementierung der Schnittstelle.

Vorteile

Die Vorteile einer Brücke bestehen darin, dass Abstraktion und Implementierung entkoppelt werden. Die Implementierung ist weiterhin während der Laufzeit dynamisch änderbar und die Erweiterbarkeit von Abstraktion und Implementierung wird verbessert.

Durch Angabe eines Parameters bei der Erzeugung einer Abstraktion kann die Implementierung gewählt werden, zudem wird die Implementierung für den Klienten vollständig versteckt. Eine starke Vergrößerung der Anzahl der Klassen kann vermieden werden.

Code-Beispiele

Ruby

class Abstraction
  def initialize(implementor)
    @implementor = implementor
  end
 
  def operation
    raise 'Implementor-Objekt antwortet nicht auf die operation-Methode' unless @implementor.respond_to?(:operation)
    @implementor.operation
  end
end
 
class RefinedAbstraction < Abstraction
  def operation
    puts 'Starte Vorgang...'
    super
  end
end
 
class Implementor
  def operation
    puts 'Wichtige Schritte ausführen'
  end
end
 
class ConcreteImplementorA < Implementor
  def operation
    super
    puts 'Zusätzliche Schritte ausführen'
  end
end
 
class ConcreteImplementorB < Implementor
  def operation
    super
    puts 'Andere, zusätzliche Schritte ausführen' 
  end
end
 
normal_with_a = Abstraction.new(ConcreteImplementorA.new)
normal_with_a.operation
# Wichtige Schritte ausführen
# Zusätzliche Schritte ausführen
 
normal_with_b = Abstraction.new(ConcreteImplementorB.new)
normal_with_b.operation
# Wichtige Schritte ausführen
# Andere, zusätzliche Schritte ausführen
 
refined_with_a = RefinedAbstraction.new(ConcreteImplementorA.new)
refined_with_a.operation
# Starte Vorgang...
# Wichtige Schritte ausführen
# Zusätzliche Schritte ausführen
 
refined_with_b = RefinedAbstraction.new(ConcreteImplementorB.new)
refined_with_b.operation
# Starte Vorgang...
# Wichtige Schritte ausführen
# Andere, zusätzliche Schritte ausführen

Verwandte Entwurfsmuster

Zum Erzeugen der des Implementierungsobjekts der Brücke kann eine Abstrakte Fabrik verwendet werden.

Ein Adapter ist der Brücke scheinbar ähnlich. Jedoch dient der Adapter einer nachträglichen Anpassung einer Klasse an eine Schnittstelle, während die Brücke eine gezielte Entscheidung zur Entkopplung ist. Beide Entwurfsmuster sind also gegensätzlich, können aber in ihrer Implementierung sehr ähnlich aussehen.


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Brücke (Begriffsklärung) — Brücke steht für: Brücke, ein Bauwerk zur Überquerung von Hindernissen Brücke (Entwurfsmuster), ein Entwurfsmuster in der objektorientierten Programmierung Brücke (Gymnastik), eine Übung in der Gymnastik Brücke (Heraldik), als gemeine Figur in… …   Deutsch Wikipedia

  • Entwurfsmuster (Buch) — Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software, ISBN 3 8273 2199 9 (Originaltitel: Design Patterns. Elements of Reusable Object Oriented Software.) ist ein 1994 von Erich Gamma, Richard Helm, Ralph Johnson und John… …   Deutsch Wikipedia

  • Entwurfsmuster — (engl. design patterns) sind bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme in Softwarearchitektur und Softwareentwicklung. Sie stellen damit eine wiederverwendbare Vorlage zur Problemlösung dar, die in einem bestimmten… …   Deutsch Wikipedia

  • Proxy (Entwurfsmuster) — Der Proxy, auch Stellvertreter genannt, ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Das Muster dient zum Verschieben der Kontrolle über ein Objekt auf ein… …   Deutsch Wikipedia

  • Beobachter (Entwurfsmuster) — Der Observer (Beobachter, Listener) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Verhaltensmuster (Behavioural Patterns). Es dient zur Weitergabe von Änderungen an einem Objekt an von diesem… …   Deutsch Wikipedia

  • Builder (Entwurfsmuster) — Der Erbauer (englisch Builder) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zur Kategorie der Erzeugungsmuster (Creational Patterns). Es trennt die Konstruktion komplexer Objekte von deren Repräsentationen, wodurch… …   Deutsch Wikipedia

  • Facade (Entwurfsmuster) — Fassade (engl. facade) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Es bietet eine einheitliche und meist vereinfachte Schnittstelle zu einer Menge von… …   Deutsch Wikipedia

  • Prototype (Entwurfsmuster) — Ein Prototyp (engl. Prototype) ist ein Entwurfsmuster (design pattern) aus dem Bereich der Softwareentwicklung und gehört zur Kategorie der Erzeugungsmuster (Creational Patterns). Neue Instanzen werden aufgrund prototypischer Instanzen… …   Deutsch Wikipedia

  • Composite (Entwurfsmuster) — Das Kompositum (engl. Composite) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Es wird angewendet um Teil Ganzes Hierarchien zu repräsentieren, indem Objekte… …   Deutsch Wikipedia

  • Einzelstück (Entwurfsmuster) — Das Singleton (auch Einzelstück genannt) ist ein in der Softwareentwicklung eingesetztes Entwurfsmuster und gehört zur Kategorie der Erzeugungsmuster (engl. Creational Patterns). Es verhindert, dass von einer Klasse mehr als ein Objekt erzeugt… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”