­

設計模式學習(八):橋接模式

設計模式學習(八):橋接模式

作者:Grey

原文地址:

部落格園:設計模式學習(八):橋接模式

CSDN:設計模式學習(八):橋接模式

橋接模式

橋接模式是一種結構型模式。它將抽象部分和實現部分分離,使他們可以獨立地變化。

使用橋接模式,可以將抽象和具體的發展單獨分支(即:抽象中持有一個具體的引用)

舉例說明:

GG 在追 MM 的時候,可以送書和花兩種禮物

public class GG {
    public void chase(MM mm) {
        Gift g = new WarmGift(new Flower());
        give(mm, g);
    }

    public void give(MM mm, Gift g) {
        System.out.println(g + "gived!");
    }
}

public abstract class Gift {
    protected GiftImpl impl;
}

public class WarmGift extends Gift {
    public WarmGift(GiftImpl impl) {
        this.impl = impl;
    }
}

public class GiftImpl {}

public class Flower extends GiftImpl {}

如上程式碼,禮物 Flower 被包裝成了一個 WarmGift 送給 MM ,WarmGift 和 WildGift 都是 Gift 的一種抽象,Flower 和 Book 都算 Gift 的一種具體實現,

我們讓 Gift 這個抽象類中,持有一個 GiftImpl 的引用

UML示例圖如下:

image

如果說代理模式是一個類與另一個類的組合,那麼橋接模式是一組類和另外一組類的組合。

橋接模式的應用

JDBC 驅動配置

當我們把具體的 Driver 實現類(比如: com.mysql.jdbc.Driver)註冊到 DriverManager 之後,後續所有對 JDBC 介面的調用,都會委派到對具體的 Driver 實現類來執行。而 Driver 實現類都實現了相同的介面(java.sql.Driver),這也是可以靈活切換 Driver 的原因。

UML 和 程式碼

UML 圖

程式碼

更多

設計模式學習專欄

參考資料