桥接模式:将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化。
通过桥接(接口)将抽象部分和实现部分解耦,桥接是一个接口,实现方继承这个接口,抽象方在抽象类中调用接口中的方法指向实现方。这样实现方通过实现桥接口进行单方面扩展,而抽象方通过继承抽象类进行单方面扩展,两者通过桥接口调用,而接口不受双方扩展的影响。
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();
}
}
桥接模式是有方向性的,桥绑定的一方是被调用者,属于被动方,抽象方属于主动方。
桥接模式降低的代码的耦合度,提高的系统的可扩展性,实现细节透明化。但是桥接模式的引入加大了系统的理解和设计难度
相关文章:
相关视频: