鍍金池/ 教程/ Java/ Java橋接模式
Java前端控制器模式
Java工廠設(shè)計(jì)模式
Java抽象工廠模式
Java觀察者模式
Java門面模式(或外觀模式)
Java備忘錄模式
Java MVC模式
Java單例模式
Java傳輸對(duì)象模式
Java迭代器模式
Java責(zé)任鏈模式
Java命令模式
Java原型模式
Java解釋器模式
Java適配器模式
Java狀態(tài)模式
Java中介者模式(Mediator Pattern)
Java攔截過濾器模式
Java策略模式
Java組合模式
Java業(yè)務(wù)代理模式
Java裝飾模式
Java模板模式
Java橋接模式
Java過濾器模式(條件模式)
Java享元模式(Flyweight Pattern)
Java建造者(Builder)模式
Java設(shè)計(jì)模式
Java空對(duì)象模式
Java數(shù)據(jù)訪問對(duì)象模式
Java訪問者模式
Java組合實(shí)體模式
Java服務(wù)定位器模式

Java橋接模式

橋接模式將定義與其實(shí)現(xiàn)分離。 它是一種結(jié)構(gòu)模式。
橋接(Bridge)模式涉及充當(dāng)橋接的接口。橋接使得具體類與接口實(shí)現(xiàn)者類無關(guān)。
這兩種類型的類可以改變但不會(huì)影響對(duì)方。

當(dāng)需要將抽象與其實(shí)現(xiàn)去耦合時(shí)使用橋接解耦(分離),使得兩者可以獨(dú)立地變化。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)模式,因?yàn)榇四J酵ㄟ^在它們之間提供橋接結(jié)構(gòu)來將實(shí)現(xiàn)類和抽象類解耦(分離)。

這種模式涉及一個(gè)接口,作為一個(gè)橋梁,使得具體類的功能獨(dú)立于接口實(shí)現(xiàn)類。兩種類型的類可以在結(jié)構(gòu)上改變而不彼此影響。

通過以下示例展示了橋接(Bridge)模式的使用,實(shí)現(xiàn)使用相同的抽象類方法但不同的網(wǎng)橋?qū)崿F(xiàn)器類來繪制不同顏色的圓形。

實(shí)現(xiàn)實(shí)例

假設(shè)有一個(gè)DrawAPI接口作為一個(gè)橋梁實(shí)現(xiàn)者,具體類RedCircleGreenCircle實(shí)現(xiàn)這個(gè)DrawAPI接口。 Shape是一個(gè)抽象類,將使用DrawAPI的對(duì)象。 BridgePatternDemo這是一個(gè)演示類,將使用Shape類來繪制不同彩色的圓形。實(shí)現(xiàn)結(jié)果圖如下 -

第1步

創(chuàng)建橋?qū)崿F(xiàn)者接口。

DrawAPI.java

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

第2步

創(chuàng)建實(shí)現(xiàn)DrawAPI接口的具體橋接實(shí)現(xiàn)者類。

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

第3步

使用DrawAPI接口創(chuàng)建一個(gè)抽象類Shape。
Shape.java

public abstract class Shape {
   protected DrawAPI drawAPI;

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

第4步

創(chuàng)建實(shí)現(xiàn)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);
   }
}

第5步

使用ShapeDrawAPI類來繪制不同的彩色圓形。

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步

驗(yàn)證輸出結(jié)果,執(zhí)行上面的代碼得到結(jié)果如下 -

Drawing Circle[ color: red, radius: 10, x: 100, 100]
Drawing Circle[  color: green, radius: 10, x: 100, 100]

上一篇:Java適配器模式下一篇:Java裝飾模式