JavaBridgePattern(橋接模式)
橋接(Bridge)是用於把抽象化與實現化解耦,使得二者可以獨立變化。這種型別的設計模式屬於結構型模式,它通過提供抽象化和實現化之間的橋接結構,來實現二者的解耦。
這種模式涉及到一個作為橋接的介面,使得實體類的功能獨立於介面實現類。這兩種型別的類可被結構化改變而互不影響。
優點: 1、抽象和實現的分離。 2、優秀的擴充套件能力。 3、實現細節對客戶透明。
缺點:橋接模式的引入會增加系統的理解與設計難度,由於聚合關聯關係建立在抽象層,要求開發者針對抽象進行設計與程式設計。
- 建立橋接實現介面。
/**
* 1. 建立橋接實現介面。
* @author mazaiting
*/
public interface DrawAPI {
/**
* 畫圓
* @param radius 半徑
* @param x 圓心橫座標
* @param y 圓心縱座標
*/
void drawCircle(int radius, int x,int y);
}
- 建立實現了 DrawAPI 介面的實體橋接實現類。
/**
* 2. 建立實現了 DrawAPI 介面的實體橋接實現類。
* @author mazaiting
*/
public class GreenCircle implements DrawAPI{
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[ color: green, radius: "
+ radius +", x: " +x+", y: "+ y +"]");
}
}
/**
* 2. 建立實現了 DrawAPI 介面的實體橋接實現類。
* @author mazaiting
*/
public class RedCircle implements DrawAPI{
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[ color: red, radius: "
+ radius +", x: " +x+", y: "+ y +"]");
}
}
- 使用 DrawAPI 介面建立抽象類 Shape。
/**
* 3. 使用 DrawAPI 介面建立抽象類 Shape。
* @author mazaiting
*/
public abstract class Shape {
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI) {
this.drawAPI = drawAPI;
}
/**
* 繪畫
*/
public abstract void draw();
}
- 建立實現了 Shape 介面的實體類。
/**
* 4. 建立實現了 Shape 介面的實體類。
* @author mazaiting
*/
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;
}
@Override
public void draw() {
drawAPI.drawCircle(radius, x, y);
}
}
- 主函式驗證
public class Client {
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();
}
}
- 列印結果
Drawing Circle[ color: red, radius: 10, x: 100, y: 100]
Drawing Circle[ color: green, radius: 10, x: 100, y: 100]
相關文章
- 橋接模式橋接模式
- JS 橋接模式JS橋接模式
- 設計模式-橋接模式設計模式橋接
- 設計模式:橋接模式設計模式橋接
- Swift-橋接模式Swift橋接模式
- 橋接模式(Bridge)橋接模式
- 08_橋接模式橋接模式
- Java設計模式-橋接模式Java設計模式橋接
- 結構型模式:橋接模式模式橋接
- 小白設計模式:橋接模式設計模式橋接
- 設計模式之橋接模式設計模式橋接
- 設計模式(八)——橋接模式設計模式橋接
- 設計模式之【橋接模式】設計模式橋接
- javascript設計模式橋接模式JavaScript設計模式橋接
- 結構型模式----橋接模式模式橋接
- 設計模式(十二):橋接模式設計模式橋接
- 設計模式之橋接設計模式橋接
- 設計模式(七)橋接設計模式橋接
- PHP 設計模式之橋接模式PHP設計模式橋接
- GoLang設計模式19 - 橋接模式Golang設計模式橋接
- Java設計模式(7)----------橋接模式Java設計模式橋接
- 設計模式 | 橋接模式(bridge)設計模式橋接
- 9.設計模式-橋接模式設計模式橋接
- 極簡設計模式-橋接模式設計模式橋接
- Python設計模式-橋接模式Python設計模式橋接
- 大話設計模式—橋接模式設計模式橋接
- 橋接模式(c++實現)橋接模式C++
- c#橋接模式詳解C#橋接模式
- 設計模式之旅12--橋接模式設計模式橋接
- Java設計模式之(六)——橋接模式Java設計模式橋接
- 23種設計模式(9)- 橋接模式設計模式橋接
- 設計模式系列 11-- 橋接模式設計模式橋接
- Android設計模式之橋接模式Android設計模式橋接
- java設計模式之一 橋接模式Java設計模式橋接
- 我學設計模式 之 橋接模式設計模式橋接
- 設計模式:橋接模式及程式碼示例、橋接模式在jdbc中的體現、注意事項設計模式橋接JDBC
- 設計模式學習-裝飾模式,橋接模式設計模式橋接
- c++涉及模式 橋接模式(bridge Pattern)C++模式橋接