橋接模式:將抽象部分與他的實現部分分離,這樣抽象化與實現化解耦,使他們可以獨立的變化。
橋接模式通過橋接(接口)將抽象部分和實現部分解耦,橋接是一個接口,實現方繼承這個接口,抽象方在抽象類中調用接口中的方法指向實現方。這樣實現方通過實現橋接口進行單方面擴展,而抽象方通過繼承抽象類進行單方面擴展,兩者通過橋接口調用,而接口不受雙方擴展的影響。
UML類圖:
interface Driver {
public void connect();
}
class MysqlDriver implements Driver {
@Override
public void connect() {
System.out.println("連接Mysql數據庫");
}
}
class OracleDriver implements Driver {
@Override
public void connect() {
System.out.println("連接Oracle數據庫");
}
}
//抽象類
abstract class Bridge {
private Driver driver;
public void connect() {
driver.connect();
}
public void setDriver(Driver driverTemp) {
this.driver = driverTemp;
}
public Driver getDriver() {
return this.driver;
}
}
//實現類
class MyBridge extends Bridge { }
//測試類
public class BridgeTest {
public static void main(String[] args) {
Bridge mysqlBridge = new MyBridge();
Driver mysqlDriver = new MysqlDriver();
mysqlBridge.setDriver(mysqlDriver);
mysqlBridge.connect();
OracleDriver oracleDriver = new OracleDriver();
mysqlBridge.setDriver(oracleDriver);
mysqlBridge.connect();
}
}
橋接模式是有方向性的,橋綁定的一方是被調用者,屬於被動方,抽象方屬於主動方。
橋接模式降低的代碼的耦合度,提高的系統的可擴展性,實現細節透明化。但是橋接模式的引入加大了系統的理解和設計難度