Brückenentwurfsmuster mit einem Beispiel
Was ist das Bridge Design Pattern?
Gemäß den GOF-Definitionen „entkoppelt das Brückenmuster eine Abstraktion von ihrer Implementierung, sodass die beiden unabhängig voneinander variieren können“
Im Bridge Design Pattern gibt es zwei Ebenen.
Die erste Schicht ist die Abstraktionsschicht
und die zweite Schicht ist die Implementierungsschicht.
Wenn ich Änderungen in der Implementierungsschicht vornehme, wirkt sich dies nicht auf die Abstraktionsschicht aus.
Wenn ich Änderungen in der Abstraktionsschicht vornehme, wirkt sich dies nicht auf die Implementierungsschicht aus.
Klassendiagramm des Brückenentwurfsmusters:
Wie im vorherigen Diagramm gezeigt, besteht das Brückenentwurfsmuster aus vier Komponenten. Sie sind wie folgt:
Implementierer :
Dies ist eine Schnittstelle, die von allen Implementierungsklassen implementiert werden muss. Diese Schnittstelle fungiert als Brücke zwischen der Abstraktionsklasse und der Implementiererklasse.
ConcreteImplementationA / ConcreteImplementaionB :
Dies sind Klassen, die den Implementor implementieren. Diese Klassen enthalten die konkrete Implementierung aller Operationen.
Abstraktion :
Dies wird eine abstrakte Klasse sein. die die Methoden für den aufzurufenden Client-Code definiert. Diese abstrakte Klasse enthält eine geschützte Implementierungsvariable, die einen Verweis auf das Objekt enthält, das die Implementierung durchführt.
ConcreteAbstraction / RefinedAbstraction :
Dies sind Klassen, die von der Abstraction-Klasse geerbt werden.
Brückenentwurfsmuster anhand eines Beispiels verstehen:
Angenommen, wir wollen neue Autos der folgenden zwei Typen (BMW oder Mercedes) produzieren (produzieren und montieren).
Dazu benötigen wir für jeden Typ eine Werkstatt, um die beiden vorherigen Aufgaben (Produzieren und Montieren) umzusetzen.
Das Klassendiagramm für unser Beispiel sieht also wie folgt aus:
Implementierung :
Wann müssen wir Bridge Design Pattern in Echtzeitanwendungen verwenden?
Wir müssen das Bridge-Entwurfsmuster in Echtzeitanwendungen verwenden, wenn:
1- Wir die Implementierungsdetails vor dem Client verbergen möchten.
2- Wir möchten, dass die Auswahl oder das Umschalten der Implementierung zur Laufzeit und nicht zur Entwurfszeit erfolgt.
3- Wir möchten, dass sowohl die Abstraktions- als auch die Implementierungsklassen durch die Unterklassen erweiterbar sind.
4- Wir wollen eine enge Kopplungsbindung zwischen einer Abstraktion und ihrer Implementierung vermeiden.
5- Die Änderungen in der Implementierung einer Abstraktion sollten keine Auswirkungen auf Clients haben.
Vollständiger Code-Link auf Github:
StructuralDesignPatterns/4-BridgeDP

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































