概念
桥接模式(Bridge Pattern)是设计模式中最复杂的模式之一,它把事物对象和该对象的具体行为、具体特征分离开来,使它们可以独自进行变化和更改。这样的解释可能比较抽象和令人费解,读者可以通过下面的应用场景进一步来理解。应用场景
我们还以绘制图形为例,比如我们要绘制矩形Rectangle、Circle、Triangle,我们需要至少需要定义3个形状类来表示,如果我们要绘制的图形还有不同的颜色,如Red、Yello、Green等,此时我们可能有一下两种设计方案:1. 为每个形状类都提供颜色的实现,比如通过继承增加RedRectangle、YellowRectangle、RedCircle、YellowCircle等
2. 根据实际需要对具体形状对象和颜色属性进行组合,把颜色属性作为参数动态给到形状对象来使用,比如红色的圆形就是组合 Circle + RedAttr
如果一个有两个及以上的变化维度的系统(或对象),采用方案2可以明显减少类的维护个数,扩展起来更为方便。方案2即为桥接模式的应用,它使用组合关联关系,而不是通过继承来做扩展,这减少了类之间的耦合,减少代码的编写量。
用过Java Swing进行过图形界面开发的读者发现,界面的风格(Look and Feel)在不同操作系统下是不一样的,实际上Java为每一个GUI组件都提供了一个Peer构件,该构件在不同操作系统下有不同的实现,Swing的Peer架构就是应用了桥接模式。
在以下情况下我们可以尝试使用桥接模式:
一