版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章,结构设计模式,讨论了类和对象的结构。它使用继承机制来组合接口或实现(类结构模式),或者聚合或依赖一些对象来实现新的功能(对象结构模式)。6.1适配器6.1.1旨在将一个类的接口转换成客户需要的另一个接口。适配器模式使由于接口不兼容而无法工作的类能够一起工作。别名:包装器,匹配不同类的接口,6.1.2结构图:1。类适配器使用继承将一个接口与另一个接口匹配:客户端、目标、请求()、适配器、特定请求()、适配器、请求()、实现、特定请求()、定义与客户端使用的特定域相关的接口,并定义需要调整的现有接口。将适配器接口适配到目标接口,特定要求,客户端,目标,请求(),适配器,特定请求(),适配器
2、,请求(),适配器。特定请求(),2。对象适配器取决于对象组合:适配器、组合、返回适配器. specificrequest(),例如:图形适配器图形卡、显示器、图形发送设备、图形卡、中央处理器、Java代码:公共类Target /传输图形信号公共字符串请求()返回。”、公共类适配器扩展目标/adaptee cpu私有Adaptee adaptee/将adaptee公共适配器(adaptee adaptee)加载到此。adaptee=adaptee/适配器传输的数据被转换为图形输出公共字符串请求()返回适配器. getdata();公共类适配器/数据由中央处理器输出公共字符串getdata()返
3、回“中央处理器数据”;公共类客户端公共静态无效主(字符串参数)/中央处理器由显卡调整目标=新适配器(新适配器();system . out . println(target . request();示例:图形编辑器、绘图编辑器、形状、边界框()创建操纵器()、线条形状、多边形形状、文本形状、边界框()创建操纵器()、边界框()创建操纵器()、边界框()创建操纵器()、文本视图、获取范围()、文本、返回文本。获取范围()、返回新的文本操纵器、示例:适配器模式处于。 NET、rcw、CCW、消费者、net客户端调用com服务器、托管、非托管、消费者、调用net服务器的COM客户端、运行时可调用包装
4、器、之间的相互调用示意图。net程序和com,例如:适配器和Java API、ActionListener、自适应进程、mylistener、actionperformed()、myclass、mymethod()、mybutton、addactionlistener()、Java Listener、6.1.3适配器、6 . 1 . 3适配器模式适用性您想使用现有的类,但它的接口不能满足您的需要。您希望创建一个可重用的类,它可以与其他不相关的类或不可预见的类一起工作。您希望使用一些现有的子类,但是不可能将每个子类都与它们的接口相匹配。对象适配器可以适应其父接口。6.1.4适配器效果类适配器:将
5、适配器和目标与特定的适配器类匹配。结果是,当我们想要匹配一个类及其所有子类时,类适配器将不能胜任。适配器可以用来重新定义适配器的一些行为,因为适配器是适配器的一个子类。只引入了一个对象,不需要额外的指针来间接获得适配器。对象适配器:允许一个适配器同时与多个适配器一起工作。使得重新定义Adaptee的行为变得困难。6.2桥接模式,6.2.1意图:将抽象部分与实现部分分开,以便它们可以独立更改。(抽象类),动机:当一个抽象可能有多个实现时,通常使用继承来协调它们。抽象类定义了这个抽象的接口,而具体的子类以不同的方式实现。但是这种方法有时不够灵活。继承机制将抽象部分和实现部分固定在一起,这使得抽象部
6、分和实现部分很难独立地修改、扩展和重用。,别名:Handle/Body,例如,在一个用户界面工具箱中,一个可移植的window抽象部分的实现使用继承机制:两个缺点,window,x window,PM window,UNIX系统,IBM的PM系统,Window,XWindow,PMWindow,图标窗口,xicon Window,pmiconWindow,专门使用窗口抽象进行图标处理。扩展窗口抽象以应用于不同类型的窗口或新的系统平台是不方便的。继承机制使客户端代码与平台相关,并采用桥接模式:窗口。drawText() drawRect(),Windowimp,devDrawText() dev
7、DrawLine(),IconWindow,drawBorder(),XWindow,PMWindow,devDrawText() devDrawLine(),imp,桥,窗口接口部分,与平台相关的窗口实现部分,6.2.2桥结构图,客户端,抽象,操作(),精炼抽象,imp .操作Impe(),实现器,操作Impe(),具体实现器,具体实现器,操作Impe(),操作Impe(),操作Impe(),实现者接口只提供基本操作。实现实现器接口并定义其具体实现,示例:通用日志工具、数据库日志、文本文件日志、日志、内爆、写日志(,imp,nimplog,Jim plog,Net平台、Java平台、Borl
8、and平台、抽象类图、公共抽象虚图();class rectangleextendssshape class circleextendssshape/这里的业务中有很多绘图模式,V2 V1/使用继承来创建不同的绘图类,类的数量增加class v1 rectangleextendssrectangle public void draw()v1 . draw _ line();class V2 rectangleextendsrectranglepublic void draw()V2 . draw _ line();class v1 CircleExtendCircle public idraw
9、()V1 . draw _ Circle();类别classV2CircleextendsCircle公共绘图()V2 . draw _ Circle();抽象类形状公共抽象空隙绘制(DrawImpdp);interfacedrawinimp publicationdrawline();publicationDrawCycle();classV1DrawImp实现DrawImp publicationDrawLine();publicationDrawCycle();classV2DrawImp实现DrawImp publicationDrawLine();publicationDrawCycle();/使用组合来聚合drawing class rectangleextendssshape public void drawing(drawin impdp)DP . drawing line();CLaSS CircleExtendsShape public void draw(DrawImpdp)DP . DrawCircle();继承实现,采用桥接模式,6.2.3适用性,您不希望抽
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【苏教版】-小学一年级数学下册-第1课时 按给定的标准分类
- 二年级小散文100篇
- 小区内露台建设方案
- 主管交办紧急工作方案
- 单位中秋活动实施方案
- 寝室公约工作方案范文
- 2025年5G技术在智能家居安全中的应用分析方案
- 编程教育进学校实施方案
- 乡村旅游扶贫开发模式方案
- 医院全面预算工作方案
- 新解读《JTGT 3660-2020公路隧道施工技术规范》
- MAM6090空压 机微电脑控制器说明书
- JTG-H30-2015公路养护安全作业规程
- 采用矿山法、盾构法、顶管法施工的隧道、洞室工程
- MH-T 5059-2022民用机场公共信息标识系统设置规范
- 企业行政管理实务(含活页实训手册) 课件 9建立工作程序
- 思皓E10X保养手册
- 安全监理考试题库
- 市政道路改造管网施工组织设计
- 海外项目科技技术管理探讨汇报材料
- 2022年菏泽职业学院教师招聘考试真题
评论
0/150
提交评论