Entwurfsmuster - Brückenmuster
Bridge wird verwendet, wenn eine Abstraktion von ihrer Implementierung entkoppelt werden muss, damit die beiden unabhängig voneinander variieren können. Diese Art von Entwurfsmuster fällt unter ein Strukturmuster, da dieses Muster die Implementierungsklasse und die abstrakte Klasse entkoppelt, indem eine Brückenstruktur zwischen ihnen bereitgestellt wird.
Bei diesem Muster handelt es sich um eine Schnittstelle, die als Brücke fungiert und die Funktionalität konkreter Klassen von Klassen für Schnittstellenimplementierer unabhängig macht. Beide Arten von Klassen können strukturell geändert werden, ohne sich gegenseitig zu beeinflussen.
Wir demonstrieren die Verwendung des Brückenmusters anhand des folgenden Beispiels, in dem ein Kreis mit derselben abstrakten Klassenmethode, aber verschiedenen Brückenimplementierungsklassen in verschiedenen Farben gezeichnet werden kann.
Implementierung
Wir haben eine DrawAPI- Schnittstelle, die als Bridge-Implementierer fungiert, und konkrete Klassen RedCircle , GreenCircle, die die DrawAPI- Schnittstelle implementieren . Shape ist eine abstrakte Klasse und verwendet das Objekt von DrawAPI . BridgePatternDemo , unsere Demo-Klasse, verwendet die Shape- Klasse, um verschiedenfarbige Kreise zu zeichnen.
Schritt 1
Erstellen Sie eine Bridge-Implementierungsschnittstelle.
DrawAPI.java
public interface DrawAPI {
public void drawCircle(int radius, int x, int y);
}
Schritt 2
Erstellen Sie konkrete Bridge-Implementierungsklassen, die die DrawAPI- Schnittstelle implementieren .
RedCircle.java
public class RedCircle implements DrawAPI {
@Override
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[ color: red, radius: " + radius + ", x: " + x + ", " + y + "]");
}
}
GreenCircle.java
public class GreenCircle implements DrawAPI {
@Override
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[ color: green, radius: " + radius + ", x: " + x + ", " + y + "]");
}
}
Schritt 3
Erstellen Sie eine abstrakte Klasse - Form , die mit DrawAPI Schnittstelle.
Shape.java
public abstract class Shape {
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI){
this.drawAPI = drawAPI;
}
public abstract void draw();
}
Schritt 4
Erstellen Sie eine konkrete Klasse, die die Formschnittstelle implementiert.
Circle.java
public class Circle extends Shape {
private int x, y, radius;
public Circle(int x, int y, int radius, DrawAPI drawAPI) {
super(drawAPI);
this.x = x;
this.y = y;
this.radius = radius;
}
public void draw() {
drawAPI.drawCircle(radius,x,y);
}
}
Schritt 5
Verwenden Sie die Klassen Shape und DrawAPI , um verschiedenfarbige Kreise zu zeichnen.
BridgePatternDemo.java
public class BridgePatternDemo {
public static void main(String[] args) {
Shape redCircle = new Circle(100,100, 10, new RedCircle());
Shape greenCircle = new Circle(100,100, 10, new GreenCircle());
redCircle.draw();
greenCircle.draw();
}
}
Schritt 6
Überprüfen Sie die Ausgabe.
Drawing Circle[ color: red, radius: 10, x: 100, 100]
Drawing Circle[ color: green, radius: 10, x: 100, 100]