Java設計模式之 橋接模式,簡單易於理解

一、橋接模式概念

橋接(Bridge)是用於把抽象化與實現化解耦,使得二者可以獨立變化。這種類型的設計模式屬於結構型模式,它通過提供抽象化和實現化之間的橋接結構,來實現二者的解耦。這種模式涉及到一個作爲橋接的接口,使得實體類的功能獨立於接口實現類。這兩種類型的類可被結構化改變而互不影響。
在現實生活中,某些類具有兩個或多個維度的變化,如圖形既可按形狀分,又可按顏色分,如果用繼承方式,m種形狀和n種顏色的圖形就有mxn種,不但對應的子類很多,而且擴展困難。

設想如果要繪製地形、圓、橢圓、正方形,我們至少需要4個形狀類,但是如果繪製的圖形需要具有不同的顫色,如紅色、綠色、藍色等,此時至少有如下兩種設計方案:

第一種設計方案是爲每一種形狀都提供一套各種顏色的版本
在這裏插入圖片描述

在這裏插入圖片描述

這兩種方法明顯比較複雜,不易擴展。

下面我們看看橋接模式
在這裏插入圖片描述
這種方式看起來就很不錯,想加一種顏色還是圖形都比較方便哈哈哈。

二、接下面我們看代碼解析

1、我們先創建一個屬於顏色的接口

public interface Color{
   public void print();
}

2、我們創建各種顏色實現顏色接口

public interface Gray implements Color{
   public void print(){
     System.out.println("這是灰色")
  }
}
public interface Red implements Color{
   public void print(){
     System.out.println("這是紅色")
  }
}

3、顏色創建好了,我們現在創建一個圖形的抽象類,用來引用顏色類

public abstract class Shape{
  private Color color;
  
  public Color getColor(){
     return color;
   }
   public void setColor(Color color){
     this.color=color;
   }
   
  public Shape(Color color){
   super();
   this.color=color;
 }
 //打印形狀
 public abstract void show();
  
}

4、創建一個圖形實現類

public class Circle extents Shape{
   public Circle(Color color){
     super(color);
   }
public void show(){
   System.out.println("圓形");
   this.getColor().print();
 }
}

5、好了,接下來我們測試一下

public class Test{
      Color red=new Red();
      Color gray=new Gray();
      Shape circle=new Circle(red);
      circle.show();
}

6、運行結果:
圓形
這是紅色

三、橋接模式的優缺點

優點
1)分離抽象接口極其實現部分。
2)橋接模式有時類似於多繼承方素,但是多繼承方案違背了類的單一職責原則(即一
個類只有一個變化的原因),複用性比較差,而且多繼承結構中類的個數非常龐大,
橋接模式是比多繼承方案重好的解決方法。
3)橋接模式提高了系統的可擴充性,在兩個變化維度中任意擴展一個維度,都不需要
修改原有系統。

缺點
1)橋接模式的引入會增加系統的理解與設計難度,由於聚合關聯關係建立在抽象層,要求開發者針對抽象進行設計與編程。
2)橋接模式要求正確識別出系統中兩個獨立變化的維度,因此其使用範圍具有一定的侷限性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章