Bridge Design Pattern in Java

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