桥接模式,用于将抽象化与实现化解偶,使得二者可以独立变化。
举一个数据库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可见的接口一致即可。