2023-02-22
原文作者:键盘林 原文地址:https://blog.csdn.net/qq_37909508/category_8976362.html

桥接模式

定义:

将抽象部分与他的具体实现部分分离,使它们都可以独立地变化

通过组合的方式建立两个类之间联系,而不是继承

类型:结构型

适用场景:

抽象和具体实现之间增加更多的灵活性

一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展

不希望使用继承,或因为多层继承导致系统类的个数剧增

优点:

分离抽象部分及其具体实现部分

提高了系统的可扩展性

符合开闭原则

符合合成复用原则

缺点:

增加了系统的理解与设计难度

需要正确地识别出系统中两个独立变化的维度

相关设计模式:

桥接模式和组合模式

桥接模式和适配器模式

coding

业务场景:现在有很多银行:例如:中国工商银行(ICBC)、中国农业银行(ABC),我们的账号可以分为定期账号和活期账号,这样的话,我们交叉一下可以看到就有四种组合,如果随着银行数量的增加以及账号类型的增加我们需要的类型就会越来越多。

创建Account接口

202302222105270921.png

创建DepositAccount类(定期账号)实现Account接口

202302222105279962.png

创建SavingAccount类(活期账号)实现Account接口

202302222105291893.png

创建Bank抽象类

202302222105304714.png

创建ABCBank类继承Bank抽象类

202302222105314855.png

创建ICBCBank类继承Bank抽象类

202302222105326806.png

当前UML类图

202302222105338127.png

创建Test类

202302222105348188.png

运行:

202302222105364689.png

这里虽然实现了调用但是其实并没有打开账号,只是在银行这边创建了账号而已,所以需要做如下修改

在银行这里进行委托调用

2023022221053767110.png

再次运行:

2023022221053889011.png

在JDK中的应用

在DriverManager中

2023022221053987712.png

DriverInfo本身其实就是Driver

2023022221054097413.png

而Driver 接口对外可以被其他类实现

2023022221054253614.png

阅读全文