桥接模式,用于将抽象化与实现化解偶,使得二者可以独立变化。
举一个数据库JDBC的例子:
定义一个Driver接口,不同的数据库实现的接口,如MySQL,SQLServer
public interface Driver {
public void connect();
}
MySQL具体类:
public class MySQL implements Driver {
public void connect() {
System.out.println("connect to MySQL");
}
}
SQLServer具体类:
public class SQLServer implements Driver {
public void connect() {
System.out.println("connect to SQLServer");
}
}
一个桥接类:
public class DriverManager {
Driver driver;
public setDriver(Driver d) {
driver = d;
}
public connect() {
driver.connect();
}
}
测试代码:
DriverManager dm = new DriverManager();
Driver mysqldriver = new MySQL();
dm.setDriver(driver);
dm.connect(); Driver sqlserverdriver = new SQLServer();
dm.setDriver(driver);
dm.connect();
利用DriverManager作为桥接类,将不同数据库的具体实现与客户实现解耦,使得二者可以独立变化,客户实现的时候才决定使用哪个数据库,而且打算更换数据库时只需要修改代码中选择数据库的部分,数据库的厂商可以自行设计数据库的具体实现,只需要保证实现Driver接口,且对DriverManager可见的接口一致即可。