文章目录
桥接模式,有的地方也叫桥梁模式,其定义是:
将抽象和实现解耦,使得两者可以独立的变化
定义本身就比较抽象,不好理解,也不太好解释,但请记住,它的重点是解耦二字。
不要纠结如何解释它,直接用具体案例来理解桥接模式是如何解耦代码的。
案例:苹果公司的个人电脑有三种机型,分别是MacBookAir
、MacBookPro
、iMac
,电脑芯片也有三种型号,分别是M1
、M2
、M3
,用代码来表示电脑产品,常规做法就是继承实现,类图如下:
这种类图的问题就是:如果要新增机型或者芯片,子类数量就会快速增长,要是再增加维度,比如显示器,继承深度又会增加。长此以往,代码的维护成本就会越来越高。
桥接模式就是主攻这类问题的,用组合替代继承,削减继承深度,控制子类数量,降低代码维护成本。
具体做法就是:将芯片从继承体系中剥离出来,单独实现,然后在机型抽象类中以组合方式引入芯片,类图如下:
这就是桥接模式,它的核心就是只在一个维度(或者少量维度)做继承实现,其余维度都以组合方式引入,既能控制子类数量,又能控制继承深度。新增一个机型或者芯片,都只需要新增一个实现类,新增一个维度,也只需要新增一个组合关系。
桥接模式引入组合关系,是为了解决继承子类数量爆炸的问题,但也间接增加了代码复杂度,实际项目中用的比较少,更多的是要借鉴它的设计思想,合理使用继承和组合,提高代码可维护性。