- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式—适配器模式和迭代器模式 目 录 适配器模式 迭代器模式 适配器模式 假设有一个软件系统,希望它能和一个新的厂商类库搭配使用,但是这个新厂商所设计出来的接口,不同于旧厂商的接口 1、情景描述 现有系统 厂商类 适配器模式 1、情景描述 不想改变现有代码,也不能改变厂商的代码,怎么办? 现有系统 厂商类 适配器 比如第三方开发组件,该组件接口与我们自己系统的接口不相同,或者由于某种原因无法直接调用该组件,可以考虑适配器。 适配器模式 2、定义 作用: 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。 适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。 分类: 适配器模式分为类适配器模式和对象适配器模式。 3、适配器介绍 适配器模式 该适配器模式所涉及的角色包括: 目标(Target)角色:这是客户所期待的接口。因为C#不支持多继承,所以Target必须是接口,不可以是类。源(Adaptee)角色:需要适配的类。适配器(Adapter)角色:把源接口转换成目标接口。这一角色必须是类 client希望使用的是Target.request(),而既有类使用的是Adaptee.SpecificRequest(),request()和SpecificRequest()可能在返回值,参数列表都不同,类适配器模式和对象适配器模式都是通过嫁接一个Adapter进行转换。 4、类适配器UML图 适配器模式 适配器模式 5、对象适配器UML图 6、两种适配器模式比较 类适配器 对象适配器 1、在Adapter类中可以对Adaptee类的方法进行重定义; 2、如果在Adaptee中添加了一个抽象方法,那么Adapter也要进行相应的改动——高耦合; 3、在Adapter中无法调用Adaptee其它子类的方法。 1、不是很容易去构造一个Adaptee类型的对象; 2、Adaptee中添加新的抽象方法时,Adapter类不需要做任何调整; 3、可以使用多态的方式在Adapter类中调用Adaptee类子类的方法。 适配器模式 7、结论 由于对象适配器的耦合度比较低,所以在很多的书中都建议使用对象适配器。在我们实际项目中,也是如此,能使用对象组合的方式,就不使用多继承的方式。 适配器模式 迭代器模式 1、情景描述 在软件系统的实现中,一定会遇到处理数组或者列表的情况,其内部存储的内容都是相同的数据类型,当遇到这种情况时,我们通常的做法是使用如下的for循环语句,对数组或者列表内容进行遍历,从而处理其中的数据内容: for (int i = 0; i array.length; i++) { //其他处理动作 System.out.println(array[i]); //其他处理动作 } 2、定义 迭代器模式 迭代器模式(Iterator Pattern),提供了一种模式顺序访问一个集合对象中各个元素的功能,而又不暴露其内部的表示。 3、模式分析 迭代器模式 如何遍历集合对象 1.传统的遍历方法 (1)耦合在集合对象内部,让容器实现遍历功能; (2)让调用集合对象的外部应用自己实现遍历算法。 2.增加第三方迭代器处理 (1)迭代器需要做到能够遍历集合中的数据; (2)迭代器在不需要暴露集合对象内部实现细节的情况 下,能够遍历集合中的数据; (3)迭代器获取集合对象内部数据的方式,也不需要依 赖于集合对象下标,即生成迭代器之后,就完全脱离 集合对象的约束。 4、调用关系 迭代器模式 迭代器模式由以下角色组成: 1.迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口。2.具体迭代器角色(Concrete?Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置。3.集合角色(Aggregate):集合角色负责提供创建具体迭代器角色的接口。4.具体集合角色(Concrete?Aggregate):具体集合角色实现创建具体迭代器角色的接口——这个具体迭代器角色于该集合的结构相关。 5、UML图 迭代器模式 迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集 合内部的数据。 6、使用场合 迭代器模式 (1) 访问一个集合对象的内容,而无须暴露 它的内部表示。 (2) 支持对集合对象的多种遍历方式。 (3) 为遍历不同的集合对象结构提供一个统 一的接口。 * * * * * * *
您可能关注的文档
- 过程控制工程测试摘要.doc
- 浮力压强(较难)详解.doc
- 过程控制计划摘要.doc
- 耦合调试类夹具课程.ppt
- 耦合及约束方程课程.ppt
- 过程控制理论与实际的结合0316摘要.ppt
- 浮游菌及表面菌检测详解.ppt
- 过程控制试摘要.doc
- 过程控制系统_齐卫红第四章摘要.ppt
- 过程控制系统_齐卫红第五章摘要.ppt
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)