Heute werden wir uns das Brückenentwurfsmuster in Java ansehen. Wenn wir sowohl in den Schnittstellen als auch in den Implementierungen Hierarchien haben, wird das Brückenentwurfsmuster verwendet, um die Schnittstellen von der Implementierung zu entkoppeln und die Implementierungsdetails vor den Client-Programmen zu verbergen.
Brückenentwurfsmuster
Genauso wie das Adaptermuster ist das Brückenentwurfsmuster eines der Strukturmuster. Laut GoF lautet die Definition des Brückenentwurfsmusters:
Trennen Sie eine Abstraktion von ihrer Implementierung, so dass beide unabhängig voneinander variieren können.
Die Implementierung des Brückenentwurfsmusters folgt der Idee, Komposition gegenüber Vererbung vorzuziehen.
Beispiel für das Brückenentwurfsmuster in Java
Wenn wir uns das Brückenentwurfsmuster mit einem Beispiel ansehen, wird es leichter verständlich sein. Angenommen, wir haben eine Schnittstellenhierarchie in beiden Schnittstellen und Implementierungen wie im folgenden Bild dargestellt. Jetzt verwenden wir das Brückenentwurfsmuster, um die Schnittstellen von der Implementierung zu entkoppeln. Das UML-Diagramm für die Klassen und Schnittstellen nach Anwendung des Brückenmusters sieht wie folgt aus.
Beachten Sie die Brücke zwischen den Schnittstellen
Shape
und Color
und die Verwendung der Komposition zur Implementierung des Brückenmusters. Hier ist der Java-Code für die Schnittstellen Shape und Color. Color.java
package com.journaldev.design.bridge;
public interface Color {
public void applyColor();
}
Shape.java
package com.journaldev.design.bridge;
public abstract class Shape {
//Komposition - Implementor
protected Color color;
//Konstruktor mit Implementor als Eingabeargument
public Shape(Color c){
this.color=c;
}
abstract public void applyColor();
}
Wir haben Implementierungsklassen für das Dreieck und das Fünfeck wie folgt. Triangle.java
package com.journaldev.design.bridge;
public class Triangle extends Shape{
public Triangle(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Triangle filled with color ");
color.applyColor();
}
}
Pentagon.java
package com.journaldev.design.bridge;
public class Pentagon extends Shape{
public Pentagon(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Pentagon filled with color ");
color.applyColor();
}
}
Hier sind die Implementierungsklassen für Rot und Grün. RedColor.java
package com.journaldev.design.bridge;
public class RedColor implements Color{
public void applyColor(){
System.out.println("red.");
}
}
GreenColor.java
package com.journaldev.design.bridge;
public class GreenColor implements Color{
public void applyColor(){
System.out.println("green.");
}
}
Lassen Sie uns unsere Brückenmusterimplementierung mit einem Testprogramm testen. BridgePatternTest.java
package com.journaldev.design.test;
import com.journaldev.design.bridge.GreenColor;
import com.journaldev.design.bridge.Pentagon;
import com.journaldev.design.bridge.RedColor;
import com.journaldev.design.bridge.Shape;
import com.journaldev.design.bridge.Triangle;
public class BridgePatternTest {
public static void main(String[] args) {
Shape tri = new Triangle(new RedColor());
tri.applyColor();
Shape pent = new Pentagon(new GreenColor());
pent.applyColor();
}
}
Die Ausgabe des obigen Brückenmusterbeispielprogramms lautet:
Triangle filled with color red.
Pentagon filled with color green.
{
„error“: „Upstream error…“
}
Source:
https://www.digitalocean.com/community/tutorials/bridge-design-pattern-java