http://oldboy-bj.taobao.com/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=272&extra=page%3D2

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

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

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



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



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



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

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


posted on 2011-01-06 15:59  老男孩咖啡  阅读(117)  评论(0编辑  收藏  举报