定义: 将抽象部分与它的具体实现部分分离,使它们都可以独立地变化
使用组合的方式 建立两个类之间的联系,而不是使用继承的方法
使用场景:
1.抽象和具体实现之间增加更多的灵活性
2.一个类存在两个(或多个)独立变化的未读,且俩各个(或多个)维度都需要独立进行扩展
3.不希望使用继承,或因为多层继承导致系统类的个数剧增
优点:
1.分离抽象部分及其具体实现部分
2.提高系统的可扩展性
3.符合开闭原则
4.符合合成复用原则
缺点:
- 增加了系统的理解与设计难度
- 需要正确地识别出系统中两个独立变化的维度
相关的设计模式:
适配器模式: 这两个都是为了两东西共同工作,但是桥接模式是分离抽象和具体的实现,
而适配器模式是为了适配接口(复用功能相似的接口),达到某种目的(复用代码)
桥接模式避免了直接继承
而是将抽象和实现之间 加了一个桥接类,把抽象的实现委托给桥接的那个类
DriverManager 提供了 getConnection 方法
JDBC 为不同的数据库提供了相同的接口,不同数据库的厂商 实现了 Connection接口,java 即可调用
可以看看相关桥接模式 的文章 https://blog.csdn.net/kangbin825/article/details/72025533
即,通过 DriverManager 这个桥 去屏蔽了 抽象和实现
调用抽象 方法 会先调用 这个 DriverManager提供的接口方法(DriverManager就是个委托类)
再由这个委托去调用具体的实现
public class BridgeTest {
public static void main(String[] args) {
Bridge bridge = new MyBridge();
/*调用第一个对象*/
Sourceable source1 = new mysqlSource();
bridge.setSource(source1);
bridge.method();
/*调用第二个对象*/
Sourceable source2 = new OracleSource();
bridge.setSource(source2);
bridge.method(); //其实 还是调用的 source.method()
}
}