設計模式學習(八):橋接模式
設計模式學習(八):橋接模式
作者:Grey
原文地址:
橋接模式
橋接模式是一種結構型模式。它將抽象部分和實現部分分離,使他們可以獨立地變化。
使用橋接模式,可以將抽象和具體的發展單獨分支(即:抽象中持有一個具體的引用)
舉例說明:
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示例圖如下:
如果說代理模式是一個類與另一個類的組合,那麼橋接模式是一組類和另外一組類的組合。
橋接模式的應用
JDBC 驅動配置
當我們把具體的 Driver 實現類(比如:
com.mysql.jdbc.Driver
)註冊到 DriverManager 之後,後續所有對 JDBC 介面的調用,都會委派到對具體的 Driver 實現類來執行。而 Driver 實現類都實現了相同的介面(java.sql.Driver
),這也是可以靈活切換 Driver 的原因。