Design Pattern: Bridge 模式
 

2009-09-17 来源:riabook.cn

 

在 Gof 的书中指到Bridge模式的目的:“将抽象部份与它的实现部份分离,使它们都可以独立地变化。”

这句话写得简短,这边再作进一步的解释,抽象部份指的是行为方面定义,实现方面指的是与特定平台相依的代码实现。

一个实际的例子在Gof书中有提到,假设您定义了一个IWindow介面,这个介面只定义一些抽象的绘图行为,而不涉及平台的实作,今天您可以继承这个类来开发适用于X Window的XWindow类,也可以继承这个类来开发适用于Windows XP系统的WindowsXP类,为了善用系统资源,您在实作IWindow介面时,会将与系统相关的实现代码撰写在介面的实作中。
 

Bridge

假设今天您继承了IWindow介面撰写了一个I3DWindow介面,当中扩充一个drawBox()方法用于3D图形的绘制,简单的说, I3DWindow介面扩充了抽象行为,为了让实现I3DWindow的类别也能在XWindow与Windows XP两个不同的系统中运行,您必须再度撰写与系统相关的实现代码。
 

Bridge

简单的说,抽象行为定义与平台相关实现混杂在一起了,为了将抽象部份与它的实现部份分离,使它们都可以独立地变化,您可以使用以下的结构。

Bridge

在上图的右边中,与平台相关的实现部份,被与右边抽象行方面的发展分开了,左边的抽象部份您可以一直发展下去,而不再因为绑定了平台特定实作方法,而使得整个结构越来越失去弹性。

Bridge模式的 UML 类别结构图如下:

Bridge

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织