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]