文章目录
定义:将抽象与实现分离,使它们可以独立变化。
它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。事实上就是处理多层继承结构,处理多维变化的场景,将各个维度设计成独立的继承结构,使得各个维度能够独立地扩展,并在抽象层建立关联。
在现实生活中,我们可能需要关注某些类的多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。
如果有一种图形,首先是形状维度,分类有正方形和圆形,然后又加了颜色维度,分类有红色和绿色,类图如下,如果要加一个黄色,那需要加黄色正方形和黄色圆形两个子类,如果再加一个维度,那需要搞更多的子类
使用桥接的思想后,以形状为主维度,组合颜色维度,分离两个维度的继承实现体系,不管是要加形状还是加颜色,都只需要多一个子类或实现类即可,如果再加一个维度,也仅仅是在Graph里面多加一个字段,并添加新维度的接口和实现类
桥接模式的优点是:
抽象与实现分离,扩展能力强
符合开闭原则,符合合成复用原则
桥接模式能够代替多层继承的方案。多层继承违背了单一职责原则,复用性较差,类的个数过多。桥接模式能够极大的降低子类的个数,从而降低管理和维护的成本.
桥接模式极大的提高了系统的可扩展性,在两个变化维度中随意扩展一个维度,都不须要改动原有的系统,符合开放-封闭原则。