Pola Desain - Pola Jembatan
Bridge digunakan ketika kita perlu memisahkan abstraksi dari implementasinya sehingga keduanya dapat berbeda secara independen. Jenis pola desain ini berada di bawah pola struktural karena pola ini memisahkan kelas implementasi dan kelas abstrak dengan menyediakan struktur jembatan di antara keduanya.
Pola ini melibatkan antarmuka yang bertindak sebagai jembatan yang membuat fungsionalitas kelas beton independen dari kelas pelaksana antarmuka. Kedua jenis kelas dapat diubah secara struktural tanpa mempengaruhi satu sama lain.
Kami mendemonstrasikan penggunaan pola Bridge melalui contoh berikut di mana sebuah lingkaran dapat digambar dalam warna berbeda menggunakan metode kelas abstrak yang sama tetapi kelas pelaksana jembatan berbeda.
Penerapan
Kami memiliki antarmuka DrawAPI yang bertindak sebagai pelaksana jembatan dan kelas beton RedCircle , GreenCircle yang mengimplementasikan antarmuka DrawAPI . Bentuk adalah kelas abstrak dan akan menggunakan objek DrawAPI . BridgePatternDemo , kelas demo kami akan menggunakan kelas Shape untuk menggambar lingkaran berwarna berbeda.
Langkah 1
Buat antarmuka pelaksana jembatan.
DrawAPI.java
public interface DrawAPI {
public void drawCircle(int radius, int x, int y);
}
Langkah 2
Buat kelas pelaksana jembatan beton yang mengimplementasikan antarmuka DrawAPI .
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 + "]");
}
}
LANGKAH 3
Buat Bentuk kelas abstrak menggunakan antarmuka DrawAPI .
Shape.java
public abstract class Shape {
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI){
this.drawAPI = drawAPI;
}
public abstract void draw();
}
LANGKAH 4
Buat kelas beton dengan mengimplementasikan antarmuka Shape .
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);
}
}
LANGKAH 5
Gunakan kelas Shape dan DrawAPI untuk menggambar lingkaran berwarna berbeda.
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();
}
}
LANGKAH 6
Verifikasi hasilnya.
Drawing Circle[ color: red, radius: 10, x: 100, 100]
Drawing Circle[ color: green, radius: 10, x: 100, 100]