橋接模式學習

橋接模式學習

橋接模式是一種結構型設計模式。它經過使用封裝、聚合及繼承等行爲讓不一樣的類承擔不一樣的職責。它的主要特色是把抽象(Abstraction)與行爲實現(Implementation)分離開來,從而能夠保持各部分的獨立性以及應對他們的功能擴展。java

示例

在學習的時候,看到了一個很不錯的例子,就拿來分享一下。編程

1.建立橋接實現接口設計模式

public interface DrawAPI {
   public void drawCircle(int radius, int x, int y);
}

2.建立接口實現類ide

建立實現了 DrawAPI 接口的實體橋接實現類。學習

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 +"]");
   }
}
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 +"]");
   }
}

3.建立橋接接口抽象類this

使用 DrawAPI 接口建立抽象類 Shape設計

public abstract class Shape {
   protected DrawAPI drawAPI;
   protected Shape(DrawAPI drawAPI){
      this.drawAPI = drawAPI;
   }
   public abstract void draw();  
}

4.建立抽象類的實例code

建立實現了 Shape 接口的實體類。繼承

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);
   }
}

5.使用接口

使用 ShapeDrawAPI 類畫出不一樣顏色的圓。

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();
   }
}

橋接模式的優勢

(1)實現了抽象和實現部分的分離

橋接模式分離了抽象部分和實現部分,從而極大的提供了系統的靈活性,讓抽象部分和實現部分獨立開來,分別定義接口,這有助於系統進行分層設計,從而產生更好的結構化系統。對於系統的高層部分,只須要知道抽象部分和實現部分的接口就能夠了。

(2)更好的可擴展性

因爲橋接模式把抽象部分和實現部分分離了,從而分別定義接口,這就使得抽象部分和實現部分能夠分別獨立擴展,而不會相互影響,大大的提供了系統的可擴展性。

(3)可動態的切換實現

因爲橋接模式實現了抽象和實現的分離,因此在實現橋接模式時,就能夠實現動態的選擇和使用具體的實現。

(4)實現細節對客戶端透明,能夠對用戶隱藏實現細節。

橋接模式的缺點

(1)橋接模式的引入增長了系統的理解和設計難度,因爲聚合關聯關係創建在抽象層,要求開發者針對抽象進行設計和編程。

(2)橋接模式要求正確識別出系統中兩個獨立變化的維度,所以其使用範圍有必定的侷限性。

相關文章
相關標籤/搜索