⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bridgepattern.htm

📁 DesignPattern基于Java方面最好的书
💻 HTM
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>



  
  
  
  <link rel="stylesheet" href="css/stdlayout.css" type="text/css">



  
  
  
  <link rel="stylesheet" href="css/print.css" type="text/css">



  
  
  
  <meta content="text/html; charset=gb2312" http-equiv="content-type">



  
  
  
  <title>Bridge 模式</title>
</head>


<body>



<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>



<h1><a href="CppGossip.html">Design Pattern:&nbsp;Bridge 模式</a></h1>



在 <a href="GoF.htm">Gof 的书</a>中指到Bridge模式的目的:“将抽象部份与它的实现部份分离,使它们都可以独立地变化。”<br>
<br>
这句话写得简短,这边再作进一步的解释,抽象部份指的是行为方面定义,实现方面指的是与特定平台相依的代码实现。<br>
<br>
一个实际的例子在Gof书中有提到,假设您定义了一个IWindow介面,这个介面只定义一些抽象的绘图行为,而不涉及平台的实作,今天您可以继承这个类
来开发适用于X Window的XWindow类,也可以继承这个类来开发适用于Windows
XP系统的WindowsXP类,为了善用系统资源,您在实作IWindow介面时,会将与系统相关的实现代码撰写在介面的实作中。<br>

<div style="text-align: center;"><img style="width: 208px; height: 275px;" alt="Bridge" title="Bridge" src="images/bridge-1.jpg"><br>
</div>
<br>
假设今天您继承了IWindow介面撰写了一个I3DWindow介面,当中扩充一个drawBox()方法用于3D图形的绘制,简单的说,
I3DWindow介面扩充了抽象行为,为了让实现I3DWindow的类别也能在XWindow与Windows
XP两个不同的系统中运行,您必须再度撰写与系统相关的实现代码。<br>
<div style="text-align: center;"><img style="width: 433px; height: 375px;" alt="Bridge" title="Bridge" src="images/bridge-2.jpg"></div>
<br>
简单的说,抽象行为定义与平台相关实现混杂在一起了,为了将抽象部份与它的实现部份分离,使它们都可以独立地变化,您可以使用以下的结构。<br>
<div style="text-align: center;"><img style="width: 635px; height: 367px;" alt="Bridge" title="Bridge" src="images/bridge-3.jpg"></div>
<br>
在上图的右边中,与平台相关的实现部份,被与右边抽象行方面的发展分开了,左边的抽象部份您可以一直发展下去,而不再因为绑定了平台特定实作方法,而使得整个结构越来越失去弹性。<br>
<br>
Bridge模式的 UML 类别结构图如下:<br>
<div style="text-align: center;"><img style="width: 473px; height: 224px;" alt="Bridge" title="Bridge" src="images/bridge-4.jpg"></div>
<br>
<br>



</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -