收藏 分销(赏)

桥接模式图文.ppt

上传人:人****来 文档编号:14507550 上传时间:2026-10-02 格式:PPT 页数:23 大小:616.04KB 下载积分:10 金币
下载 相关
桥接模式图文.ppt_第1页
第1页 / 共23页
桥接模式图文.ppt_第2页
第2页 / 共23页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,10,章,桥接模式,欧阳宏基,信息工程学院,本章教学内容,桥接模式,模式动机与定义,模式结构与分析,模式实例与解析,模式效果与应用,模式扩展,桥接模式的,动机,设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要,4,个形状类,而且绘制的图形需要具有不同的颜色,如白色、灰色、黑色等,如何来设计:,(1),第一种设计方案是为每一种形状都提供一套各种颜色的版本。,桥接模式的,动机,(2),第二种设计方案是根据实际需要对形状和颜色进行组合,桥接模式,动机,对于有,两个变化维度,(即两个变化的原因)的系统,采用,方案二,来进行设计系统中类的个数更少,且系统扩展更为方便。设计方案二即是桥接模式的应用。桥接模式,将继承关系转换为关联关系,,从而,降低了类与类之间的耦合,,,减少了代码编写量,。,桥接模式的定义,模式桥接模式,(Bridge Pattern),:,将抽象部分与它的实现部分分离,使它们都可以独立地变化,。它是一种对象结构型模式,又称为柄体,(Handle and Body),模式或接口,(Interface),模式。,桥接模式的角色,Abstraction,:,抽象类,与,Implementor,对象具有关联关系,可以包含抽象的业务和具体的业务方法。,RefinedAbstraction,:,扩充抽象类,通常是具体类,实现,Abstraction,中定义的抽象业务方法,可以调用,Implementor,中的业务方法。,Implementor,:,实现类接口,定义基本的方法,具体实现交给子类完成。,ConcreteImplementor,:,实现,Implementor,中的方法。,桥接模式的结构,桥接模式核心代码,典型的实现类接口代码:,public interface Implementor,public void operationImpl();,桥接模式核心代码,典型的抽象类代码:,public abstract class Abstraction,protected Implementor impl;,public void setImpl(Implementor impl),this.impl=impl;,public abstract void operation();,桥接模式核心代码,典型的扩充抽象类代码:,public class RefinedAbstraction extends Abstraction,public void operation(),/,代码,impl.operationImpl();,/,代码,桥接模式实例与解析,实例一:模拟毛笔,有大、中、小,3,种型号的毛笔,有,5,个不同颜色的颜料盒,使用桥接模式来模拟毛笔的使用过程,(,不同型号的毛笔利用不同颜色进行绘制,),。,桥接模式的实例与解析,见源文件:模拟毛笔,桥接模式实例与解析,实例二:跨平台视频播放器,如果需要开发一个跨平台视频播放器,可以在,不同操作系统平台(如,Windows,、,Linux,、,Unix,等),上播放多种格式的视频文件,常见的视频格式包括,MPEG,、,RMVB,、,AVI,、,WMV,等,。现使用桥接模式设计该播放器。,桥接模式实例与解析,实例二:跨平台视频播放器,桥接模式分析,理解桥接模式,重点需要理解如何将,抽象化,(Abstraction),、,实现化,(Implementation),和脱耦,,使得二者可以独立地变化。,抽象化,:在面向对象中,,将对象的共同性质抽取出来形成类的过程,即为抽象化的过程。,实现化,:,针对抽象化给出的具体实现,,实现化产生的对象比抽象化更具体,是对抽象化事物的进一步具体化的产物。,脱耦,:脱耦就是,将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联,,,将两个角色之间的继承关系改为关联关系,。桥接模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用关联关系(组合或者聚合关系)而不是继承关系,从而使两者可以相对独立地变化。,桥接模式的优点,分离抽象、接口及其实现部分。,(2),桥接模式有时类似于多继承方案,但是多继承方案违背了类的单一职责原则(即一个类只有一个变化的原因),复用性比较差,而且多继承结构中类的个数非常庞大,,桥接模式是比多继承方案更好的解决方法,。,(3),桥接模式,提高了系统的可扩充性,,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。,(4),实现细节对客户透明,可以对用户隐藏实现细节,。,桥接模式的缺点,(1),由于聚合关联关系建立在抽象层,,增加系统的理解与设计难度,要求开发者针对抽象进行设计与编程。,(2),桥接模式要求正确识别出系统中,两个独立变化的维度,,因此,其使用范围具有一定的局限性,。,桥接模式的适用环境,(1),如果一个系统,需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,,,避免在两个层次之间建立静态的继承联系,,通过桥接模式可以使它们在抽象层建立一个关联关系。,(2),抽象化角色和实现化角色可以以继承的方式独立扩展而互不影响,,在程序运行时可以动态将一个抽象化子类的对象和一个实现化子类的对象进行组合,即系统需要对抽象化角色和实现化角色进行动态耦合。,(3),一个类,存在两个独立变化的维度,,且这两个维度都需要进行扩展。,(4),虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。,多层次继承导致系统类的个数急剧增加的系统,,桥接模式尤为适用。,桥接模式的应用,(1)Java,语言通过,Java,虚拟机实现了平台的无关性。,(2)第二种设计方案是根据实际需要对形状和颜色进行组合,实例二:跨平台视频播放器,典型的扩充抽象类代码:,模式桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。,对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便。,(1)由于聚合关联关系建立在抽象层,增加系统的理解与设计难度要求开发者针对抽象进行设计与编程。,而在初步设计完成之后,当发现系统与已有类无法协同工作时,可以采用适配器模式。,public void operation(),典型的实现类接口代码:,抽象化:在面向对象中,将对象的共同性质抽取出来形成类的过程即为抽象化的过程。,Abstraction:抽象类,与Implementor对象具有关联关系,可以包含抽象的业务和具体的业务方法。,Abstraction:抽象类,与Implementor对象具有关联关系,可以包含抽象的业务和具体的业务方法。,(2)JDBC驱动程序也是桥接模式的应用之一。,分离抽象、接口及其实现部分。,(4)实现细节对客户透明,可以对用户隐藏实现细节。,public void operation(),它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。,public void operation(),桥接模式的应用,(2)JDBC,驱动程序也是桥接模式的应用之一。,使用,JDBC,驱动程序的应用系统就是抽象角色,而所使用的数据库是实现角色。,一个,JDBC,驱动程序可以动态地将一个特定类型的数据库与一个,Java,应用程序绑定在一起,从而实现抽象角色与实现角色的动态耦合。,而在初步设计完成之后,当发现系统与已有类无法协同工作时,可以采用适配器模式。,(4)虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。,实现化:针对抽象化给出的具体实现,实现化产生的对象比抽象化更具体,是对抽象化事物的进一步具体化的产物。,Abstraction:抽象类,与Implementor对象具有关联关系,可以包含抽象的业务和具体的业务方法。,(2)桥接模式有时类似于多继承方案,但是多继承方案违背了类的单一职责原则(即一个类只有一个变化的原因),复用性比较差,而且多继承结构中类的个数非常庞大,桥接模式是比多继承方案更好的解决方法。,public abstract void operation();,而在初步设计完成之后,当发现系统与已有类无法协同工作时,可以采用适配器模式。,(3)桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。,public void setImpl(Implementor impl),(3)桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。,(4)实现细节对客户透明,可以对用户隐藏实现细节。,(2)桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性。,(2)桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性。,适配器模式与桥接模式的联用,而在初步设计完成之后,当发现系统与已有类无法协同工作时,可以采用适配器模式。,桥接模式的扩展,适配器模式与桥接模式的联用,桥接模式和适配器模式用于设计的不同阶段,,桥接模式用于系统的初步设计,,对于存在两个独立变化维度的类可以将其分为抽象化和实现化两个角色,使它们可以分别进行变化;而在初步设计完成之后,,当发现系统与已有类无法协同工作时,可以采用适配器模式,。但有时候在设计初期也需要考虑适配器模式,特别是那些涉及到大量第三方应用接口的情况。,桥接模式的扩展,适配器模式与桥接模式的联用,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服