桥接模式
定义:
将抽象部分与他的具体实现部分分离,使它们都可以独立地变化
通过组合的方式建立两个类之间联系,而不是继承
类型:结构型
适用场景:
抽象和具体实现之间增加更多的灵活性
一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展
不希望使用继承,或因为多层继承导致系统类的个数剧增
优点:
分离抽象部分及其具体实现部分
提高了系统的可扩展性
符合开闭原则
符合合成复用原则
缺点:
增加了系统的理解与设计难度
需要正确地识别出系统中两个独立变化的维度
相关设计模式:
桥接模式和组合模式
桥接模式和适配器模式
coding
业务场景:现在有很多银行:例如:中国工商银行(ICBC)、中国农业银行(ABC),我们的账号可以分为定期账号和活期账号,这样的话,我们交叉一下可以看到就有四种组合,如果随着银行数量的增加以及账号类型的增加我们需要的类型就会越来越多。
创建Account接口
创建DepositAccount类(定期账号)实现Account接口
创建SavingAccount类(活期账号)实现Account接口
创建Bank抽象类
创建ABCBank类继承Bank抽象类
创建ICBCBank类继承Bank抽象类
当前UML类图
创建Test类
运行:
这里虽然实现了调用但是其实并没有打开账号,只是在银行这边创建了账号而已,所以需要做如下修改
在银行这里进行委托调用
再次运行:
在JDK中的应用
在DriverManager中
DriverInfo本身其实就是Driver
而Driver 接口对外可以被其他类实现