设计模式:桥接模式详解-解耦抽象与实现

需积分: 0 0 下载量 52 浏览量 更新于2024-08-05 收藏 310KB PDF 举报
在第3.3章《设计模式》讲义中,王晓蒙针对一个具体问题提出了桥接模式的概念。该问题涉及设计一个程序来画出多种几何形状,如圆形、矩形和三角形。初始设计中,定义了一个抽象的`Shape`类,包含一个`draw()`方法,然后有三个具体的实现类:`Rectangle`、`Circle`和`Triangle`,它们分别实现了各自的绘制方法。 然而,当需要增加颜色属性(如红色和蓝色)时,按照简单的继承方式扩展会导致代码结构变得复杂。例如,为了实现红色和蓝色的圆形,我们创建了新的`RedCircle`和`BlueCircle`类,它们分别继承自`Circle`并覆盖`draw()`方法以添加颜色属性。这表明,抽象的`Shape`类与其实现类之间的耦合度较高,扩展性和代码复用性受到了限制。 桥接模式(Bridge或柄体分离)的出现正是为了解决这个问题。它的设计意图在于将系统的抽象部分(例如形状的概念)与实现部分(颜色和具体的形状)解耦。这样,当抽象部分(如形状类型)改变时,不会影响到实现部分(如颜色),反之亦然。如果对颜色进行修改,只需要在颜色相关的类中进行,而无需改动形状类及其子类,从而极大地提高了系统的灵活性和可维护性。 完整的类图展示了这种解耦的设计结构:`Shape`作为接口,其下有多个具体的形状类(如`Circle`、`Rectangle`和`Triangle`),以及具有特定颜色的新类(如`RedCircle`、`BlueCircle`)。这些颜色类负责添加颜色属性,并通过调用父类的`draw()`方法来完成形状的绘制。这样,随着需求的变化,我们可以轻松地添加更多的颜色选项,而不会引起原有代码的大量修改。 桥接模式是一种设计模式,它通过将抽象与实现分离,实现了系统的可扩展性和代码复用性,使得当系统的需求发生改变时,可以高效地适应新需求而无需重构大量的基础代码。这对于大型软件项目来说,具有重要的实际意义和价值。