




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DesignPatterns 迭代器模式 刘伟 Sunny weiliu china 大纲 迭代器模式概述迭代器模式的结构与实现迭代器模式的应用实例使用内部类实现迭代器 NET内置迭代器迭代器模式的优缺点与适用环境 遥控器 迭代器模式概述 电视机遥控器与电视机示意图 迭代器模式概述 分析电视机 存储电视频道的集合 聚合类 AggregateClasses 电视机遥控器 操作电视频道 迭代器 Iterator 访问一个聚合对象中的元素但又不需要暴露它的内部结构 迭代器模式概述 分析聚合对象的两个职责 存储数据 聚合对象的基本职责遍历数据 既是可变化的 又是可分离的将遍历数据的行为从聚合对象中分离出来 封装在迭代器对象中由迭代器来提供遍历聚合对象内部数据的行为 简化聚合对象的设计 更符合单一职责原则 迭代器模式概述 迭代器模式的定义对象行为型模式 迭代器模式概述 迭代器模式的定义又名游标 Cursor 模式通过引入迭代器 客户端无须了解聚合对象的内部结构即可实现对聚合对象中成员的遍历 还可以根据需要很方便地增加新的遍历方式 迭代器模式的结构与实现 迭代器模式的结构 迭代器模式的结构与实现 迭代器模式的结构迭代器模式包含以下4个角色 Iterator 抽象迭代器 ConcreteIterator 具体迭代器 Aggregate 抽象聚合类 ConcreteAggregate 具体聚合类 迭代器模式的结构与实现 迭代器模式的实现典型的抽象迭代器代码 迭代器模式的结构与实现 迭代器模式的实现典型的具体迭代器代码 迭代器模式的结构与实现 迭代器模式的实现典型的抽象聚合类代码 迭代器模式的结构与实现 迭代器模式的实现典型的具体聚合类代码 迭代器模式的应用实例 实例说明 迭代器模式的应用实例 实例类图 销售管理系统数据遍历结构图 迭代器模式的应用实例 实例代码 1 AbstractObjectList 抽象聚合类 2 ProductList 商品数据类 充当具体聚合类 3 AbstractIterator 抽象迭代器 4 ProductIterator 商品迭代器 充当具体迭代器 5 Program 客户端测试类 演示 参考代码 DesignPattern IteratorSample 迭代器模式的应用实例 结果及分析如果需要增加一个新的具体聚合类 只需增加一个新的聚合子类和一个新的具体迭代器类即可 原有类库代码无须修改 符合开闭原则如果需要更换一个迭代器 只需要增加一个新的具体迭代器类作为抽象迭代器类的子类 重新实现遍历方法即可 原有迭代器代码无须修改 也符合开闭原则如果要在迭代器中增加新的方法 则需要修改抽象迭代器的源代码 这将违背开闭原则 使用内部类实现迭代器 实现 NET内置迭代器 枚举接口 System Collections IEnumerable NET内置迭代器 抽象的迭代器接口 System Collections IEnumerator NET内置迭代器 分析ICollection继承自IEnumerable IList继承自ICollection 而ArrayList是IList的子类 实现了GetEnumerator 方法 并返回一个ArrayListEnumeratorSimple类型的对象 NET内置迭代器 分析IEnumerable抽象聚合类IEnumerator抽象迭代器ArrayList具体聚合类ArrayListEnumeratorSimple具体迭代器 NET内置迭代器 应用实例 迭代器模式的优缺点与适用环境 模式优点支持以不同的方式遍历一个聚合对象 在同一个聚合对象上可以定义多种遍历方式简化了聚合类由于引入了抽象层 增加新的聚合类和迭代器类都很方便 无须修改原有代码 符合开闭原则 迭代器模式的优缺点与适用环境 模式缺点在增加新的聚合类时需要对应地增加新的迭代器类 类的个数成对增加 这在一定程度上增加了系统的复杂性抽象迭代器的设计难度较大 需要充分考虑到系统将来的扩展 在自定义迭代器时 创建一个考虑全面的抽象迭代器并不是一件很容易的事情 迭代器模式的优缺点与适用环境 模式适用环境访问一个聚合对象的内容而无须暴露它的内部表示需要为一个聚合对象提供多种遍历方式为遍历不同的聚合结构提供一个统一的接口 在该接口的实现类中为不同的聚合结构提供不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 难点解析人教版八年级上册物理光现象《光的反射》重点解析试卷(含答案详解版)
- 会计资格证考试题目及答案
- 2025济南小教面试考试真题及答案
- 贵池十中分班考试题及答案
- 个人债权转让协议示范文本8篇
- 汶上三中分班考试试卷及答案
- 金水区公益性岗位考试题及答案
- 2025年《劳动关系协调员》考试练习题及答案
- 2025年陕西省西安市碑林区事业单位招聘考试综合类无领导小组讨论面试真题模拟试卷
- 2025年陕西省事业单位招聘考试卫生类医学影像专业知识真题模拟及答案
- 2025至2030全球及中国InfiniBand行业发展趋势分析与未来投资战略咨询研究报告
- 河南省委党校在职研究生入学考试真题及答案
- 【MOOC期末】《中国马克思主义与当代》(北京科技大学)期末慕课答案
- GB/T 18645-2002动物结核病诊断技术
- 无菌技术操作技能评分标准
- 安恩.雅各布森
- 汉语作为第二语言教学概论课件
- 超星尔雅学习通《尊重学术道德遵守学术规范(武汉大学)》章节测试含答案
- 单位工程(子单位)竣工验收备案表
- C语言期末题库(八套试卷)及答案
- 印刷包装企业风险分级管控告知牌
评论
0/150
提交评论