桥梁模式的结构与示意性源代码_第1页
桥梁模式的结构与示意性源代码_第2页
桥梁模式的结构与示意性源代码_第3页
桥梁模式的结构与示意性源代码_第4页
桥梁模式的结构与示意性源代码_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1一、

桥梁〔Bridge〕模式桥梁模式是一个非常有用的模式,也是比拟复杂的一个模式。熟悉这个模式对于理解面向对象的设计原那么,包括"开-闭"原那么(OCP)以及组合/聚合复用原那么(CARP)都很有帮助。理解好这两个原那么,有助于形成正确的设计思想和培养良好的设计风格。桥梁模式的用意【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。抽象化庙存在脏于多冶个实预体中辉的共搬同的窑概念猪性联畅系,贡就是寇抽象睛化。锈作为性一个调过程纯,抽谷象化呼就是村忽略命一些村信息模,从腊而把棵不同铸的实村体当堵做同阅样的澡实体更对待洪【L僵IS址KO经V9馆4】紧。盟实现嚼化秩抽象小化拆给出贸的闲具体凯实现吩,就糖是实顽现化乒。脱耦洒所谓季耦合旧,就雪是两命个实然体的厚行为精的某坊种强导关联其。而哨将它液们的既强关评联去臣掉,陈就是丑耦合沃的解赏脱,东或称盆脱耦束。在疫这里讽,脱泉耦是朽指将挎抽象猾化和腥实现岗化之遣间的青耦合抚解脱雨开,爹或者拣说是膀将它滔们之缘间的抬强关酸联改浇换成洗弱关犬联。察将两姨个恰角色骂之间率的继手承关愈系改灭为聚恼合关住系,鼻就是他将它阵们之慈间的艇强关充联改呈换成味为弱护关联屑。因尊此以,桥关梁模室式中权的所赠谓脱酬耦,赵就是适指在扛一个张软件赞系统微的抽谅象化认和实垦现化铲之间面使用敞组合英/忙聚合般关系遍而不统是继染承关谢系,扎从而君使两胆者可详以相律对独寻立地厉变化柏。这哄就是嚷桥梁半模式吼的用趣意。

贪二、腿

桥印梁模捕式的赌结构芒桥梁汁模式太【G刑OF胳95土】是烤对象丽的结蛮构模除式诚,又获称为长柄体氏(H喇an眨dl优e脖an洒d壳B毒od记y)将模式暑或接棒口(往In攀te梨rf氏ac终e)打模式貌。貌下列图侦所示冷就是随一个矮实现瘦了桥欣梁模吃式的面示意逮性系岗统的蒜结构厚图。独可以赌看出摄,这分个系援统含茂有两棋个等蛮级结山构,体也就改是:燕由抽库象化购角色餐和修懒正抽治象化趁角色窄组成惜的翼抽象巧化等筐级结圆构。怨梳由实松现化幅角色颤和两周个具端体实满现化刘角色列所组禽成的乔实现发化等视级结拉构梦。吴桥梁剪模式为所涉造及的叶角色苹有:路抽象啄化(林Ab侄st辩ra梯ct敲io贤n)上角色生:摇抽象够化给酱出的披定义趣,并稼保存贸一个甩对实页现化嫩对象纹的引杯用。蓝因修正衡抽象萌化(听Re趟fi返ne便d钳Ab飘st赤ra徐ct脸io王n)杂角色写:糟扩展渡抽象象化角浑色,纷改变帖和修滨正父叮类对可抽拉象化趣的定耀义。预散实现允化(梢Im守pl贡em药en忙to底r)雄角色倒:循这个还角色肥给出馅实现陪化角嚷色的储接口平,但蔽不给剖出具缠体的板实现闯。必踩须指湖出的却是,尝这个洒接口授不一惩定和企抽象辰化角挪色的密接口汁定义所相同轧,实霸际上猫,这衣两个肝接口谎可以母非常惜不一帐样。通实现婶化角吨色应已当只吼给出芝底层许操作真,膝而抽斤象化罩角色政应当喜只给兴出基趣于底衰层操柏作的刚更高叠一层牧的操布作。蔽车具体费实现宜化(违Co图n使cr啦et业e产Im润p役le爱me粥nt葵or素)角初色:裤这个洗角色斯给出哪实现盏化角劲色接夫口的奔具体哀实现怀。

托三、你

桥旁梁模勺式的子示意码性源沟代码

硬//烫

B纷ri茧dg茧e

罢pa辩tt誓er周n

蝇--沿

S叮tr丰uc颠tu跨ra快l

善ex替am鞠pl些e

库us秘i链ng烘

S阵ys漫te腾m;

耍//纠

"列Ab玩st刃ra荡ct哑io岂n"

燃cl伶as龄s龙

A杯bs母tr捷ac撕ti那么on

小{

拍//太

F案ie贼ld泪s

瞎pr触ot低ec锐te穷d铜

I拆mp继le现me匹nt可or零

i骄mp失le骗me证nt滩or霉;

危/勤/

忍Pr双op宣er届ti处es

疮pu借bl麦ic竿

I宇mp上le盟me写nt阿or趋

I为m端pl梳em仅en敲to竞r

壳{

垂se软t漫{

更im伏pl暑em怖en深to双r

孙=

匹va想lu苍e;泡

}

造}

违//证

M辰et稍ho标ds

材vi成rt奶ua芦l格

罢pu刮bl估ic起

汪vo招id喜

O愁pe芬ra后ti眯on哈()县

教{

三im农pl公em稳en脆to洲r.夕Op型er掌at浴io热n(死);

行}

闹}

榆//状

"涨Im驶pl徐em聋en车to忆r"

系ab林st攀ra吃ct慰

兼cl生as腿s股

I烈mp驻le净me恰nt镜or

食{

见//翻

M蝶et晌ho事ds哭

汉ab嗓st侨ra夺ct虏

起pu夸bl右ic乔

歉vo盲id馅

O云pe织ra龄ti捐on与()庙;享}

爆//次

"时Re奴fi室ne浑dA攻bs絮tr辉ac很ti朝on席"

驾cl惑as尾s越

R酬ef停in器ed仅Ab响st催ra盏ct游io神n

慢:

东Ab农st果ra中ct室io搂n

顾{

芝//滩

M睛et渠ho句ds

夜ov六er元ri离de鞭

响pu枕bl锅i赤c厨

群vo发id董

O糠pe孟ra巩ti由on皮()

症{

溪im筝pl吓em煮en式to超r.殊Op亭er姨at插io渡n(窑);

嫁}

凡}

涛//蕉

"炊Co挨nc船re黑te利Im骗pl接em袄en铲to跌rA偏"

该cl降as饼s敲

C楼on始cr黎et日eI宋mp蜜l简em榜en剃to井rA仅

:逮

I喂mp势le常me扭nt属or

俊{

供//载

M狱et片ho禁ds

帮ov甜er丈ri掏de扩

恒pu监bl迷ic脊

业vo章id西

O搬pe丢ra看ti斯on因()

屡{

执Co但ns做ol咳e.强Wr嘱it云eL化in振e(蜜"C似on他cr遥et指eI细mp宴le击me堪nt碑or伤A

枯Op赚er档at建io距n"萌);

艳}

怕}

划//荡

"寿Co瞒nc盖re锡te虫Im袜pl惕em遥en沫to婚rB壁"

给cl宵as休s慨

C神on笋cr斗et宇eI泛mp职le凤me左nt垮or下B

沫:

乳Im杨pl鹿em帜en椅to扎r

协{

抵//裹

M帮et劝ho骨ds

肾ov故er酷ri极de数

魄pu穗b铸li谱c降

猴vo顷id挂

O肚pe订ra烂ti简on壮()

狼{

厕Co抵ns蹦ol嗓e.拜Wr烦it箭eL葵in融e(赴"C单on爹cr柔et渠eI真mp蝶le笑me趟nt见or滤B

构Op目er控at期io誉n"俯);

汪}

铲}

注俊躲//贵/撇

阶//俘/军

C狠li暗en艺t

眯te应st

逃//贸/巩

枣pu腥bl忍ic傲

党cl格as挣s姿

翻Cl义ie宪nt

脾{

狐pu败bl陷ic祥

予st思at瞒ic叛

懂vo某id匀

M废ai贺n(她

饰st勇ri酱ng些[]臭

a狮rg墨s

评)

锻{

像Ab查st怜ra拼ct忠io员n

满ab梁st银ra坐ct真io紧n

狸=

朴ne元w号

R座ef跨in杜ed博Ab使st显ra慎c竭ti挎on侄()辈;

头//逢

S利et彻

i菊mp铁le衡me铁nt贿at垃io忘n

全an貌d

娱ca识ll

欲ab怕st杏ra腰ct放io值n.决Im孝pl残em便en奏to夫r

方=

掀ne洒w打

C预on股cr耗et平eI裹mp畅le突me秃nt融or内A(种);

愧ab慰st枕ra踩ct种io引n.抵Op硬er铁at适io孙n(假设);

回//李

C获ha竞ng焦e

梢im迁pl趁em羞en衰ti革on蛮

a椅nd商

c王al保l

狡ab定st将ra益ct谅io恩n.检Im侵pl花em坑en拾to瓦r

奸=

差ne隐w毕

C应on状cr尝et僚eI劲mp蜘le炉me具nt值or乞B(骄);

昼ab亿st勾ra姜ct夜io鼓n.影Op安er线at狡io勾n(载);

倘}

绕}

钩四、肚

调绑制解熔调器持问题忆感觉乡?敏帮捷软程件开厦发-稻原那么侨、模疏式与井实践魄?中康关于搏Br限id液ge龙模式孝的例坛子很绝好。侮〔?举Ja弯va挪与模恭式?型一书裁33怕章的盒对变红化的逝封装歇一节庄也写放得很集不错慕,推配荐大粒家读俯一读裕。它找深入从的阐摧述了染?D党es白ig造n容Pa振tt扮er誓ns侄E魂xp伤la傻in勿ed声?一畜书中续"1认〕D涂es于ig上n汽to斧i倡nt马er欧fa将ce耀s.僻2霞)F套av书or船c朋om翅po盖si斥ti画on重o降ve怜r猫in矩he踩ri科ta阵nc混e.茄3嘉)F院in脸d批wh福at熄v终ar皇ie饭s菌an驶d它en丘ca缴ps撤ul炊at茂e欧it昂"的皱三个采观点夺。〕收。幻如图筒所屠示,醉有大肌量的貌调制炸解调猎器客罩户程节序在圾使廊用M腔od希em番接口坏。M肾od日em次接口列被怕几个大派馋生类龄H宗ay络es僵Mo免de岗m、购US该Ro李bo耽ti凡cs纯Mo纪de饲m和绒E士ar稿ni途es绿Mo童de够m实搏现。员它很诸好地德遵循钢了O裤CP被、L卷SP狸和D递IP神。当佳增加乡新种岁类的狠调制旬解调遥器时迁,调秋制解略调器跌的客篮户程缴序不钩会受杜影响纲。拣假定判这种愁情形足持续浴了几尸年,破并有沟许多因调制笋解调嫁器的旬客户冻程序删都在洪使用勺着M尿od厌em险接口更。现详出现重了一愧种不总拨号愿的调莫制解恰调器符,被汤称为鼠专用雀调制尖解调驾器。问它们潮位于翠一条面专用揉连接惹的两骄端。舌有几暮个新霸应用刷程序盼使用键这些腥专用碌调制和解调崇器,摩它们哑无需扔拨号傅。我狸们称泛这些芹使用到者为井De组dU逝se淡r。买但是吊,客仁户希彼望当计前所会有的此调制溜解调偏器返客户贼程序倍都可乌以使勾用这棋些专打用调遣制解察调夕器。边他厘们不兔希中望去兽更改闻许许罚多多非的调司制解谣调器污客户仆应用受程序充,所巡以完糊全可棒以让缸这些非调制腔解调滨器客激户程渣序去兰拨一干些假攻(唇du改mm澡y)郊丙号码济。重如果律能选格择的凳话,篇我们纵会把抬系统海的设养计更且改为搜下列图舞所示胀的那某样。印我们计把拨免号和凶通信演功能惨别离洗为两额个不钉同的灶接口彼。原可来的闻调制拨解调屯器实尾现这怀两个念接口铸,而炸调制舱解调或器客掏户程黄序使再用这穿两个射接口鄙。D参ed煮Us亿er山只使屑用赏Mo旁de巨m接躺口,运而D摩ed缩ic跟at罚eM抗od鸣em爱只实嫂现M薪od冲em姥接口旁。但陵这样稳做会养要求扫我们源更改率所有叨的调更制解秀调器殿客户检程序波--南这是映客羞户不山允许磁的。衫一个央可能唤的解鉴决方枕案是树让D度ed盒ic颂at晌ed肠Mo责de蠢m从案Mo需de恶m派迈生并斩且把蓬di错al通方法漆和h做an姓gu娃p方描法实扯现为溜空,榜就像哀下面茶这样它:朱几个叔月后早,已孕经有汗了大邮量的冲De宣dU烘se热r,浇此时皮客户肆提出龟了一卧个新席的更今改。疮为了皱能拨鲁国际排枣号码窑、信乳用卡农躲、P瑞IN湾标识朝心等等铁,必耳修对易现有敌di州al记中使版用c缺ha赴r[尚10丛]存握储号叔码改叨为能肥够拨皆打任沟意长业度的疯呆号码脂。五显然把,所伙有的敬调制凯解调士器客俗户程歼序都真必须泪更改除。客位户同迷意了嫌对调甚制解效调器呆客户首程序愧的更荡改,介因为浸他们杂别无哑选择蛇。糟娘糕的耽是,居现在宇必须炊要去歼告诉占De常dU啊se悄r的歼编写沿者,牙他们殊必须里要更婶改蔽他们提的代商码!绞你可蜻以想您象他岔们听仔到这川个范会有丈多高饭兴。盲本来劫他们授是不砍用调埋用d剩i蝶al呀的但。武这就维是许效多项随目都居会具胶有的撑那种驳有害膊的混纷乱依热赖关蜡系。蕉系统循某一焰局部养中的垮一个占杂凑惨体(雄kl堤ud逼ge正)创法建了努一个雾有害奶的依泰赖关付系,扯最终父导致萌系统冤中完街全无膊关的款局部阴出现检问题臭。陷如果利使用扁AD岛AP经TE享R模蹦式解译决最致初的访问题秆的话览,就遍可以厚防止氏这个哗严重攻问题朝。如街图:善请注熟意,泉杂凑跟体仍国然存狠在。暮适配熔器仍广然要辩模拟猜连接莫状态齿。然糟而,予所有兔的依顿赖关洽系都勺是从聪适配盼器发阿起的堪。杂垦凑体拼和系骂统隔倾离,敬藏身灶于几痕乎无皮人知淘晓的输适配议器中遮。兰BR日ID蕉GE巡模式榆看待轰这个停问题百,还卫有另快外一弹个方凳式。租现在赖,蕉出现盖了另承外一挣种切疫分M攀od尊em阅层次蜡结繁构的块方式授。如斑下列图婆:堡这不配是一拼个理泥想的站结构胖。每刃当增京加一鲜款新雀硬件避时,敲就必留须创京建两庆个新豆类-还-一闪个针劲对专某用的拼情况针,一疮个针巨对拨虑号的贤情况想。每幼当增御加一房种新厅连接懂类型也时,害就必某须创筹建3贤个新准类,僚分别债对应生3款点不同房的硬习件。帆如果兄这两烫个自罗由度堪根本的就是航不稳絮定的驶,那默么不霸用多返久,映就会蛙出现乏大量振的派扬生类它。谦在类矩型层写次结珍构具膊有多株个自江由度崭的情旺况中务,B陕RI钞DG抱E模藏式通叼常是厅有用斗的。距我们纠可以郊把这猴些层纱次结疾构分天开并仿通过俭桥把式它们钟结合阿到一俗起,兼而不贺是把远它们艇合并厘起来蝴。如或图:鄙我们纽把调维制解锤调器其类层亡次结傅构分如成两径个层供次结越构。观一个概表示挑连接其方法廉,另烂一个理表示匹硬件序。虫这个慧结构糕虽然交复杂榴,但晒是很灭有趣捉。它事的创虹建不者会影简响珠到调章制解流调器宅的使脉用者工,并核且还狱完全症分辆离了茄连接瞧策略司和硬欠件实卫现。升M敢od先em眨Co妨nn沿ec久tC念on庆tr丙ol矿le岭r的逆每个射派生话类代钟表了紧一个捧新的卸连接雅策略便。在稻这个治策略尽的实躲现中队可以绩使用犯se剃nd老lm六p、施re冷ce芒iv救el鞭mp童、卡di士al侨lm昌p和村ha笑ng蚊lm眯p。腹新i瓶mp犹方法庸的增材加不标会影仁响到逢使用取者。当可以竟使用渗IS激P来退给连驱接控棵制类知增加值新的赏接口陷。这公种做我法可负以创韵建出丢一条偶迁移为路径您,调考制解吉调器唐的客救户程任序可庄以沿型着这垂条路冠径慢面慢地因得到模一个脚比d载ia洽l和尾ha原ng曲up说层次再更高假的A贷PI界。

佛五、萍

另往外一断个实思际应裳用浪Br化id定ge宿模式虎的例四子竞该例顺子演隶示了冬业务态对象姻〔涨Bu僻si辈ne娇ss找Ob脆j盆ec腔t〕每通过痕Br洗id皆ge校模式湖与数延据对昼象〔架Da服ta万Ob馒je百ct衬〕解德耦。并数据等对象蹲的实戴现可施以在挑不改烘变客施户端锦代码湿的情呢况下谱动态尼进行葵更换惠。

//

Bridge

pattern

--

Real

World

example

using

System;

using

System.Collections;

//

"Abstraction"

class

BusinessObject

{

//

Fields

private

DataObject

dataObject;

protected

string

group;

//

Constructors

public

BusinessObject(

string

group

)

{

this.group

=

group;

}

//

Properties

public

DataObject

DataObject

{

set{

dataObject

=

value;

}

get{

return

dataObject;

}

}

//

Methods

virtual

public

void

Next()

{

dataObject.NextRecord();

}

virtual

public

void

Prior()

{

dataObject.PriorRecord();

}

virtual

public

void

New(

string

name

)

{

dataObject.NewRecord(

name

);

}

virtual

public

void

Delete(

string

name

)

{

dataObject.DeleteRecord(

name

);

}

virtual

public

void

Show()

{

dataObject.ShowRecord();

}

virtual

public

void

ShowAll()

{

Console.WriteLine(

"Customer

Group:

{0}",

group

);

dataObject.ShowAllRecords();

}

}

//

"RefinedAbstraction"

class

CustomersBusinessObject

:

BusinessObject

{

//

Constructors

public

CustomersBusinessObject(

string

group

)

:

base(

group

){}

//

Methods

override

public

void

ShowAll()

{

//

Add

separator

lines

Console.WriteLine();

Console.WriteLine(

"------------------------"

);

base.ShowAll();

Console.WriteLine(

"------------------------"

);

}

}

//

"Implementor"

abstract

class

DataObject

{

//

Methods

abstract

public

void

NextRecord();

abstract

public

void

PriorRecord();

abstract

public

void

NewRecord(

string

name

);

abstract

public

void

DeleteRecord(

string

name

);

abstract

public

void

ShowRecord();

abstract

public

void

ShowAllRecords();

}

//

"ConcreteImplementor"

class

CustomersDataObject

:

DataObject

{

//

Fields

private

ArrayList

customers

=

new

ArrayList();

private

int

current

=

0;

//

Constructors

public

CustomersDataObject()

{

//

Loaded

from

a

database

customers.Add(

"Jim

Jones"

);

customers.Add(

"Samual

Jackson"

);

customers.Add(

"Allen

Good"

);

customers.Add(

"Ann

Stills"

);

customers.Add(

"Lisa

Giolani"

);

}

//

Methods

public

override

void

NextRecord()

{

if(

current

<=

customers.Count

-

1

)

current++;

}

public

override

void

PriorRecord()

{

if(

current

>

0

)

current--;

}

public

override

void

NewRecord(

string

name

)

{

customers.Add(

name

);

}

public

override

void

DeleteRecord(

string

name

)

{

customers.Remove(

name

);

}

public

override

void

ShowRecord()

{

Console.WriteLine(

customers[

current

]

);

}

public

override

void

ShowAllRecords()

{

foreach(

string

name

in

customers

)

Console.WriteLine(

"

"

+

name

);

}

}

///

///猫

C努li

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论