【设计模式】结构型:桥接模式(Bridge Pattern)

文章目录

桥接模式,有的地方也叫桥梁模式,其定义是:

将抽象和实现解耦,使得两者可以独立的变化

定义本身就比较抽象,不好理解,也不太好解释,但请记住,它的重点是解耦二字。

不要纠结如何解释它,直接用具体案例来理解桥接模式是如何解耦代码的。

案例:苹果公司的个人电脑有三种机型,分别是MacBookAirMacBookProiMac,电脑芯片也有三种型号,分别是M1M2M3,用代码来表示电脑产品,常规做法就是继承实现,类图如下:

«interface»
Mac
«abstract»
AbstractMac
MacBookAir
MacBookPro
iMac
MacBookAirM1
MacBookAirM2
MacBookAirM3
MacBookProM1
MacBookProM2
MacBookProM3
iMacM1
iMacM2
iMacM3

这种类图的问题就是:如果要新增机型或者芯片,子类数量就会快速增长,要是再增加维度,比如显示器,继承深度又会增加。长此以往,代码的维护成本就会越来越高。

桥接模式就是主攻这类问题的,用组合替代继承,削减继承深度,控制子类数量,降低代码维护成本。

具体做法就是:将芯片从继承体系中剥离出来,单独实现,然后在机型抽象类中以组合方式引入芯片,类图如下:

«interface»
Mac
«abstract»
AbstractMac
MacBookAir
MacBookPro
iMac
Chip
M1
M2
M3

这就是桥接模式,它的核心就是只在一个维度(或者少量维度)做继承实现,其余维度都以组合方式引入,既能控制子类数量,又能控制继承深度。新增一个机型或者芯片,都只需要新增一个实现类,新增一个维度,也只需要新增一个组合关系。

桥接模式引入组合关系,是为了解决继承子类数量爆炸的问题,但也间接增加了代码复杂度,实际项目中用的比较少,更多的是要借鉴它的设计思想,合理使用继承组合,提高代码可维护性。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值