预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共32页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第第1111章章 桥接模式桥接模式 主讲教师:程细柱韶关学院计算机系 本书主编:刘伟清华大学出版社 本章教学内容 桥接模式 9模式动机与定义 9模式结构与分析 9模式实例与解析 9模式效果与应用 9模式扩展 桥接模式 模式动机 9设想如果要绘制矩形、圆形、椭圆、正方形,我们至少 需要4个形状类,但是如果绘制的图形需要具有不同的 颜色,如红色、绿色、蓝色等,此时至少有如下两种设 计方案: •第一种设计方案是为每一种形状都提供一套各种颜色 的版本。 •第二种设计方案是根据实际需要对形状和颜色进行组 合。 桥接模式 2 Š模式动机 1 要12个类,只要7个 且增加1个类,且增加 形状或颜色1个形状或 要增加多个颜色只增加 类。1个类。 桥接模式 模式动机 9对于有两个变化维度(即两个变化的原因)的 系统,采用方案二来进行设计系统中类的个数 更少,且系统扩展更为方便。设计方案二即是 桥接模式的应用。桥接模式将继承关系转换为 关联关系,从而降低了类与类之间的耦合,减 少了代码编写量。 桥接模式 模式动机 桥接模式 模式定义 9桥接模式(BridgePattern):将抽象部分与它 的实现部分分离,使它们都可以独立地变化。 它是一种对象结构型模式,又称为柄体 (HandleandBody)模式或接口(Interface) 模式。 桥接模式 模式定义 9BridgePattern:Decoupleanabstractionfromits implementationsothatthetwocanvary independently. 9Frequencyofuse:medium 桥接模式 模式结构 Client AbstractionImplementor impl +operation()+operationImpl() RefinedAbstractionConcreteImplementorAConcreteImplementorB +operation()+operationImpl()+operationImpl() 桥接模式 模式结构 9桥接模式包含如下角色: •Abstraction:抽象类 •RefinedAbstraction:扩充抽象类 •Implementor:实现类接口 •ConcreteImplementor:具体实现类 桥接模式 模式分析 9理解桥接模式,重点需要理解如何将抽象化(Abstraction)与实 现化(Implementation)脱耦,使得二者可以独立地变化。 •抽象化:抽象化就是忽略一些信息,把不同的实体当作同样 的实体对待。在面向对象中,将对象的共同性质抽取出来形 成类的过程即为抽象化的过程。 •实现化:针对抽象化给出的具体实现,就是实现化,抽象化 与实现化是一对互逆的概念,实现化产生的对象比抽象化更 具体,是对抽象化事物的进一步具体化的产物。 •脱耦:脱耦就是将抽象化和实现化之间的耦合解脱开,或者 说是将它们之间的强关联改换成弱关联,将两个角色之间的 继承关系改为关联关系。桥接模式中的所谓脱耦,就是指在 一个软件系统的抽象化和实现化之间使用关联关系(组合或 者聚合关系)而不是继承关系,从而使两者可以相对独立地 变化,这就是桥接模式的用意。 桥接模式 模式分析 9典型的实现类接口代码: publicinterfaceImplementor { publicvoidoperationImpl(); } 桥接模式 模式分析 9典型的抽象类代码: publicabstractclassAbstraction { protectedImplementorimpl; publicvoidsetImpl(Implementorimpl) {this.impl=impl;} publicabstractvoidoperation(); } 桥接模式 模式分析 9典型的扩充抽象类代码: publicclassRefinedAbstractionextendsAbstraction { publicvoidoperation(){ //代码 impl.operationImpl(); //代码 } } 桥接模式 桥接模式实例与解析 9实例一:模拟毛笔 •现需要提供大中小3种型号的画笔,能够绘制5种不 同颜色,如果使用蜡笔,我们需要准备3*5=15支蜡 笔,也就是说必须准备15个具体的蜡笔类。而如果 使用毛笔的话,只需要3种型号的毛笔,外加5个颜 料盒,用3+5=8个类就可以实现15支蜡笔的功能。 本实例使用桥接模式来模拟毛笔的使用过程。 桥接模式 Š桥接模式实例与解析Red 9实例一:模拟毛笔+bepaint(StringpenTy