Notes
Search…
Bridge
桥接模式,也叫桥梁模式。应用场景比较局限,在实际项目中并没有常见,简单了解即可。
GoF 中的定义:Decouple an abstraction from it's implementation so that the two can vary independently。将抽象和实现解耦,所以它们可以独立变化。
如下所示,如要缓存 Oracle 的数据库,改为 oracle.jdbc.driver.OracleDriver就行。
1
Class.forName("com.mysql.jdbc.Driver");//加载及注册JDBC驱动程序
2
String url = "jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password";
3
Connection con = DriverManager.getConnection(url);
4
...
Copied!
1
package com.mysql.jdbc;
2
3
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
4
static {
5
try {
6
java.sql.DriverManager.registerDriver(new Driver());
7
} catch (SQLException E) {
8
throw new RuntimeException("Can't register driver!");
9
}
10
}
11
}
Copied!
1
public class DriverManager {
2
static {
3
loadInitialDrivers();
4
}
5
6
public static synchronized void registerDriver(java.sql.Driver driver) throws SQLException {
7
if (driver != null) {
8
registeredDrivers.addIfAbsent(new DriverInfo(driver));
9
} else {
10
throw new NullPointerException();
11
}
12
}
13
}
Copied!
这里的抽象不是抽象类或接口,而是抽象出来的一套类库,比如 JDBC;实现也不是接口的实现,而是实现的一套类库,比如 MySQL 的 Driver、Oracle 的 Driver。
很多书籍、资料中有其它解释:一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。类似于组合由于继承
Last modified 1yr ago
Copy link