- 1、本文档共104页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 结构型设计模式
第九章 结构型设计模式 目录 6.1 适配器模式 6.2 装饰模式 6.3 桥接模式 6.4 享元模式 6.5 外观模式 6.6 代理模式 6.7 组合模式 6.1 适配器(Adapter)模式 一.适配器模式的由来 二.适配器模式的意图和适用性 三.适配器模式结构及参与者 四.应用举例 五.效果分析 6.1.1 适配器模式的由来 Adapter模式解决的问题在生活中经常会遇到:比如我们有一个team为外界提供S类服务,但是我们team里面没有能够完成此项任务的member,然后我们得知有A可以完成这项服务。为了保证我们对外的服务类别的一致性(提供S服务),我们有以下两种方式解决这个问题: 1)把A直接招安到我们team为我们工作,提供S服务的时候让A去办就是了; 2)A可能在别的地方有工作,并且不准备接受我们的招安,于是我们team可以想这样一种方式解决问题:我们安排B去完成这项任务,并让B做好A的工作,让B工作的时候可以向A请教,因此B就是一个复合体(提供S服务,但是是A的继承弟子)。 6.1.1 适配器模式的由来 Adapter模式用途 实际上在软件系统设计和开发中,这种问题会经常遇到:我们为了完成某项工作购买了一个第三方的库来加快开发。这就带来了一个问题:我们在应用程序中已经设计好了功能接口,与这个第三方提供的接口不一致,为了使得这些接口不兼容的类(不能在一起工作)可以在一起工作,Adapter模式提供了将一个类(第三方库)的接口转化为客户(购买使用者)希望的接口。 6.1.2 适配器模式意图和适用性 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 6.1.2 适配器模式意图和适用性 你想使用一个已经存在的类,而它的接口不符合你的要求。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。 (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。 适配器模式分为类模式适配器和对象模式适配器。 6.1.3 适配器模式意图和适用性 类适配器和对象适配器有不同的权衡。类适配器 用一个具体的adapter类对adapater和target进行匹配。结果是当我们想要匹配一个类及以及所有它的子类时,类adapter将不能胜任工作。 使得adapter可以重定义adaptee的部分行为,因为adapter时adaptee的一个子类。 仅仅引入了一个对象,并不需要额外的指针以间接得到adaptee。 对象适配器则 允许一个adapter与多个adaptee(即adaptee本身以及它的所有子类)同时工作。Adapter也可以一次给所有的adaptee添加功能。 使得重定义adaptee的行为比较困难。这就需要生成adaptee的子类并且使得adapter引用这个子类而不是引用adapter本身。 class Target { public: virtual void Request(); }; class Adaptee { public: void SpecificRequest(); }; class Adapter:public Target,private Adaptee//同时继承Target和Adapatee { public: void Request(); }; void Adapter::Request() { this-SpecificRequest(); //通过继承实现Adaptee的方法SpecificRequest () } class Target { public: virtual void Request(); }; class Adaptee { public: void SpecificRequest(); }; class Adapter:public Target { public: Adapter(Adaptee* ade); //产生一个Adaptee对象 ~Adapter(); void Request(); private: Adaptee* _ade; }; Adapter::Adapter(Adaptee* ade) { this-_ade = ade; //传递Adaptee对象到Adapter } void Adapter::Request() { _ade-
您可能关注的文档
- 第三讲外交公报翻译.ppt
- 第三讲 铁碳合金.ppt
- 第三节 旅游资源地域分异.ppt
- 第三讲 电路知多少-新.ppt
- 第三课 ORACLE 9i 进程管理.ppt
- 第三节 地理大发现和早期殖民运动.ppt
- 第三节 路面基层质量控制.ppt
- 第三课 诚信驻心间.ppt
- 第三课英国议会对王权的胜利.ppt
- 第三部分 广播电视新闻学类别论之电视民生新闻.ppt
- 2025年贵州工业职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年西昌民族幼儿师范高等专科学校高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年西藏警官高等专科学校高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年贵州工商职业学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
- 2025年贵州工商职业学院高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年贵州农业职业学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年许昌职业技术学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年许昌职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
最近下载
- 桥梁箱梁吊装专项施工方案汇报材料.ppt
- 2023中航集团(国航股份)信息管理部社会招聘笔试备考题库及答案解析.docx
- 数字化与绿色技术促进可持续发展专题政策研究报告(2024).pdf
- 102word格式支持编辑修改也支持打印使用小学生儿童成长档案幼儿园模板个人电子版a4记录纪念手册.docx VIP
- 赡养协议书范文6篇.docx VIP
- 高中地理培训心得5篇 .pdf
- “双减”政策背景下小学课后服务现状及优化策略研究--以S小学为例.pdf
- 047word格式支持编辑修改也支持打印使用小学生儿童成长档案幼儿园模板个人电子版a4记录纪念手册.docx VIP
- 部编版六年级语文下册《北京的春节》教学设计.doc VIP
- 2019年国航股份管理部IT人才招聘模拟试题及答案解析.docx VIP
文档评论(0)