bridge模式简要介绍

上传人:汽*** 文档编号:560856997 上传时间:2023-05-16 格式:DOCX 页数:35 大小:88.63KB
返回 下载 相关 举报
bridge模式简要介绍_第1页
第1页 / 共35页
bridge模式简要介绍_第2页
第2页 / 共35页
bridge模式简要介绍_第3页
第3页 / 共35页
bridge模式简要介绍_第4页
第4页 / 共35页
bridge模式简要介绍_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《bridge模式简要介绍》由会员分享,可在线阅读,更多相关《bridge模式简要介绍(35页珍藏版)》请在金锄头文库上搜索。

1、bridgge模式式1. 问题题 总结结面向对对象实际际上就两两句话:一是松松耦合(CCoupplinng),二二是高内内聚(CCoheesioon)。面面向对象象系统追追求的目标就是是尽可能能地提高高系统模模块内部部的内聚聚(Coohessionn)、尽尽可能降降低模块块间的耦耦合(CCoupplinng)。然然而这也也是面向向对象设设计过程程中最为为难把握握的部分分,大家家肯定在在OO系系统的开开发过程程中遇到到这样的的问题:1)客户给给了你一一个需求求,于是是使用一一个类来来实现(AA);2)客户需需求变化化,有两两个算法法实现功功能,于于是改变变设计,我我们通过过一个抽抽象的基基类,再

2、再定义两两个具体体类实现现两个不不同的算算法(AA1和AA2);3)客户又又告诉我我们说对对于不同同的操作作系统,于于是再抽抽象一个个层次,作作为一个个抽象基基类A00,在分分别为每每个操作作系统派派生具体体类(AA00和和A011,其中A000表示原原来的类类A)实实现不同同操作系系统上的的客户需需求,这这样我们们就有了了一共44个类。4)可能用用户的需需求又有有变化,比比如说又又有了一一种新的的算法.5)我们陷陷入了一一个需求求变化的的郁闷当当中,也也因此带带来了类类的迅速速膨胀。Bridgge模式式则正是是解决了了这类问问题。2. 模式式选择Briddge模模式典型型的结构构图为: 在B

3、Briddge模模式的结结构图中中可以看看到,系系统被分分为两个个相对独独立的部部分,左左边是抽抽象部分分,右边边是实现现部分,这这两个部部分可以以互相独独立地进进行修改改:例如如上面问问题中的的客户需需求变化化,当用用户需求求需要从从Absstraactiion派派生一个个具体子子类时候候,并不不需要像像上面通通过继承承方式实实现时候候需要添添加子类类A1和和A2了了。另外外当上面面问题中中由于算算法添加加也只用用改变右右边实现现(添加加一个具具体化子子类),而而右边不不用在变变化,也也不用添添加具体体子类了了。 一切切都变得得eleegannt!vieww pllainncoppy tto

4、 cclippboaardpprinnt?/* * 作者:一雨田田(htttp:/t/dyylgssy/) * * Briidgee模式:将抽象象部分与与它的实实现部分分分离,使使它们都都可以独独立地变变化。 * 这句话话真是很很晦涩,我我来解释释一下。所所谓的实实现部分分,你可可以想象象成一个个功能库库,这个个库是用用类来组组织的, * 并且实实现了你你需要的的功能,而而抽象部部分就是是使用这这个库的的类。 * 让他们们独立变变化的意意思就是是说,库库增加或或者使用用库的代代码改变变都是在在两边独独立变化化的,不不影响另另一边 * 就好像像隔了个个桥梁一一样,如如果你理理解了,就就会觉得得B

5、RIIDGEE这个名名字改得得真好。 * 好了,如如果不明明白也没没关系,先先看看下下面的代代码。应应该能明明白的 */ /* * 任务叙叙述:我我们现在在要实现现一个画画图系统统,这个个系统的的需求暂暂时来说说有以下下几个: * 1、画画圆、画画长方形形。(先先实现画画这两个个形状) * 2、已已经有两两个画图图库了,这这些画图图库中定定义了我我们需要要的操作作,我们们没必要要重新去去实现了了 * 3、我我们的系系统能够够决定使使用哪个个的画图图库中的操操作 * 根据以以上的需需求,我我们的代代码设计计如下(这里先先不使用用Briidgee模式,以以便对比比) : */ /* * 注意,这这

6、里使用用了个预预编译宏宏 _BBRIDDGE_MODDE 来来隔开使使用Brridgge和不不使用BBriddge两两块代码码。可以以以这个个来做分分界对比比看 * 两部分分的代码码 */ #inclludee #inclludee usingg naamesspacce sstd; / 把这这里注释释掉就是是不使用用Briidgee模式的的代码 #defiine _BRRIDGGE_MMODEE / 画图图库1 classs CDDrawwLibb1 publiic: vvoidd DrrawCCirccle() couut 画圆操操作1 enndl; vvoidd DrrawRRectta

7、nggle() couut 画画长方形形操作11 eendll; vvoidd DrrawTTriaanglle() couut 画三角角形操作作1 enddl; ; / 画图图库2 classs CDDrawwLibb2 publiic: vvoidd DrrawCCirccle() couut 画圆操操作2 enndl; vvoidd DrrawRRecttanggle() couut 画长方方形操作作2 enddl; vvoidd DrrawTTriaanglle() couut 画三角角形操作作2 enddl; ; / 只只要声明明 _BBRIDDGE_MODDE 就就可以在在使用或或

8、者不使使用Brridgge模式式间切换换了 #ifnddef _BRRIDGGE_MMODEE/不不使用桥桥模式代代码 / 看到到形状,很很容易想想到经典典的Shhapee抽象类类,并定定义一个个Draaw接口口 / 这里里1代表表使用画画图库11的画图图操作 classs CSShappe1 publiic: vvirttuall vooid Draaw() = 0; proteecteed: CCDraawLiib1 _drrawLLib; ; / 画圆圆和画长长方形,好好,这里里就派生生出两个个形状 classs CCCirccle11: ppubllic CShhapee1 publi

9、ic: / 实实现Drraw操操作,使使用画图图库1 vvirttuall vooid Draaw() / 使用画画图库11 _drrawLLib.DraawCiirclle(); ; classs CRRecttanggle11: ppubllic CShhapee1 publiic: / 实实现Drraw操操作,但但是要使使用画图图库1 vvirttuall vooid Draaw() / 使用画画图库11 _drrawLLib.DraawReectaanglle(); ; / 再定定义使用用画图库库2的SShappe classs CSShappe2 publiic: vvirttuall vooid Draaw() = 0; proteecteed: CCDraawLiib2 _drrawLLib; ; / 画圆圆和画长长方形,好好,这里里就派生生出两个个形状 classs CCCirccle22: ppubllic CSShappe2 publiic: / 实实现Drraw操操作,使使用画图图库2 vvirttuall vooid Draaw() / 使用画画图库22 _drrawLLib.DraawCiirclle(); ; classs CRRecttanggle22: ppubllic CShhapee2 publiic: / 实实现Drra

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号