Tasarım Desenleri - Köprü Deseni
Köprü, bir soyutlamayı uygulamasından ayırmamız gerektiğinde kullanılır, böylece ikisi birbirinden bağımsız olarak değişebilir. Bu desen türü, aralarında bir köprü yapısı sağlayarak uygulama sınıfını ve soyut sınıfı ayırdığı için yapısal modelin altına girer.
Bu model, somut sınıfların işlevselliğini arayüz gerçekleyici sınıflarından bağımsız kılan bir köprü görevi gören bir arayüz içerir. Her iki sınıf türü de birbirini etkilemeden yapısal olarak değiştirilebilir.
Aynı soyut sınıf yöntemi, ancak farklı köprü uygulayıcı sınıfları kullanılarak bir dairenin farklı renklerde çizilebildiği aşağıdaki örnekle Bridge deseninin kullanımını gösteriyoruz.
Uygulama
Biz var DrawAPI köprü uygulayici ve beton sınıfları olarak davranmaktadır arayüzü RedCircle , GreenCircle uygulayan DrawAPI arayüzü. Shape soyut bir sınıftır ve DrawAPI nesnesini kullanır . BridgePatternDemo , demo sınıfımız farklı renkli daire çizmek için Shape sınıfını kullanacaktır .
Aşama 1
Köprü uygulayıcı arayüzü oluşturun.
DrawAPI.java
public interface DrawAPI {
public void drawCircle(int radius, int x, int y);
}
Adım 2
DrawAPI arayüzünü uygulayarak somut köprü uygulayıcı sınıfları oluşturun .
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 + "]");
}
}
Aşama 3
DrawAPI arabirimini kullanarak soyut bir sınıf Shape oluşturun .
Shape.java
public abstract class Shape {
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI){
this.drawAPI = drawAPI;
}
public abstract void draw();
}
4. adım
Shape arabirimini uygulayarak somut sınıf oluşturun .
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);
}
}
Adım 5
Farklı renkli daireler çizmek için Shape ve DrawAPI sınıflarını kullanın.
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();
}
}
6. Adım
Çıkışı doğrulayın.
Drawing Circle[ color: red, radius: 10, x: 100, 100]
Drawing Circle[ color: green, radius: 10, x: 100, 100]