扫码关注官方订阅号
正文
0
ringa_lee
发布时间:2017-08-19 13:36:40
4967人浏览过
来源于php中文网
原创
什么是迭代器模式
定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部显示
下面是迭代器模式结构图:
下面的示例代码简单了解一下:
立即学习“PHP免费学习笔记(深入)”;
//抽象聚合类 abstract class Aggregate { public abstract Iterator CreateIterator(); } //具体聚合类 class ConcreteAggregate : Aggregate { private IList items = new List(); public override Iterator CreateIterator() { return new ConcreteIterator(this); } public int Count { get { return items.Count; } } public object this[int index] { get { return items[index]; } set { items.Insert(index, value); } } } //抽象迭代器类 abstract class Iterator { public abstract object First(); public abstract object Next(); public abstract bool IsDone(); public abstract object CurrentItem(); } //具体迭代器类 class ConcreteIterator : Iterator { private ConcreteAggregate aggregate; private int Current = 0; public ConcreteIterator(ConcreteAggregate aggregate) { this.aggregate = aggregate; } public override object CurrentItem() { return aggregate[Current]; } public override object First() { return aggregate[0]; } public override bool IsDone() { return Current >= aggregate.Count ? true : false; } public override object Next() { object ret = null; Current++; if(Current分析:想一下,如果把集合对象和对集合对象的操作放在一起,当我们想换一种方式遍历集合对象中元素时,就需要修改集合对象了,违背“单一职责原则”,而迭代器模式将数据结构和数据结构的算法分离开,两者可独立发展。 优点: 1.支持多种遍历方式。比如有序列表,我们根据需要提供正序遍历、倒序遍历两种迭代器。用户只需要得到我们的迭代器,就可以对集合执行遍历操作 2.简化了聚合类。由于引入了迭代器,原有的集合对象不需要自行遍历集合元素了 3.增加新的聚合类和迭代器类很方便,两个维度上可各自独立变化 图片旋转弹出框插件-WOWWINDOW WowWindow是Lightbox的一个替代,更加有趣,更加强大。该插件用到了css3,所以在浏览器的支持上将会有一些不足。如果你正在寻找Lightbox的替代插件,那么WowWindow将是一个不错的选择。 下载 4.为不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上操作 缺点: 1.迭代器模式将存储数据和遍历数据的职责分离增加新的集合对象时需要增加对应的迭代器类,类的个数成对增加,在一定程度上增加系统复杂度 使用场景: 1.访问一个聚合对象内容而无须暴露它的内部显示 2.需要为聚合对象提供多种遍历方式 3.为遍历不同的聚合结构提供一个统一的接口
分析:想一下,如果把集合对象和对集合对象的操作放在一起,当我们想换一种方式遍历集合对象中元素时,就需要修改集合对象了,违背“单一职责原则”,而迭代器模式将数据结构和数据结构的算法分离开,两者可独立发展。
优点:
1.支持多种遍历方式。比如有序列表,我们根据需要提供正序遍历、倒序遍历两种迭代器。用户只需要得到我们的迭代器,就可以对集合执行遍历操作
2.简化了聚合类。由于引入了迭代器,原有的集合对象不需要自行遍历集合元素了
3.增加新的聚合类和迭代器类很方便,两个维度上可各自独立变化
WowWindow是Lightbox的一个替代,更加有趣,更加强大。该插件用到了css3,所以在浏览器的支持上将会有一些不足。如果你正在寻找Lightbox的替代插件,那么WowWindow将是一个不错的选择。
4.为不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上操作
缺点:
1.迭代器模式将存储数据和遍历数据的职责分离增加新的集合对象时需要增加对应的迭代器类,类的个数成对增加,在一定程度上增加系统复杂度
使用场景:
1.访问一个聚合对象内容而无须暴露它的内部显示
2.需要为聚合对象提供多种遍历方式
3.为遍历不同的聚合结构提供一个统一的接口
相关文章
如何在 MySQL 中高效获取指定记录的上一条和下一条记录 ID
如何在MySQL中高效获取指定ID的前一个和后一个记录ID
PHP require和include有啥区别_PHP两种引入语句用法差异对比【介绍】
PHP在Windows和Linux运行有差异吗_PHP跨系统使用注意事项汇总【汇总】
PHP中文星期日期字符串咋转_转数字星期再格式化【方法】
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招_javascript技巧
2018-05-23 15:10
中国省市区数据mysql脚本_MySQL
2018-05-16 10:08
mysql数据库数据变化实时监控
2018-05-15 16:50
RabbitMQ与PHP
2018-05-18 11:40
apache2.4+php5.6 不能加载php5apache2_4.dll
2018-05-15 09:13
PHP获取当前目录和相对目录的方法_PHP教程
2018-05-18 14:03
JS调用PHP和PHP调用JS的方法示例
2018-05-26 10:25
纯js封装的ajax功能函数与用法示例
2018-05-15 09:06
Phpstorm+Xdebug断点调试PHP的方法
2018-05-15 09:07
phpstudy2018升级后站点及phpmyadmin打开404解决方案
2018-06-30 16:21
热门AI工具
DeepSeek
幻方量化公司旗下的开源大模型平台
AI大模型
开放平台
豆包大模型
字节跳动自主研发的一系列大型语言模型
通义千问
阿里巴巴推出的全能AI助手
腾讯元宝
腾讯混元平台推出的AI助手
文档处理
Excel 表格
文心一言
文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。
中文写作
讯飞写作
基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿
写作工具
即梦AI
一站式AI创作平台,免费AI图片和视频生成。
图片拼接
图画生成
ChatGPT
最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。
智谱清言 - 免费全能的AI助手
PDF 文档
相关专题
本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。
77
2026.01.09
本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。
45
本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。
118
本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。
10
本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。
14
汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。
70
漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。
324
精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。
42
本合集专为零基础用户打造,涵盖PHP网站搭建全流程,从环境配置到实战开发,免费、易懂、系统化,助你快速入门建站!
12
热门下载
相关下载
精品课程
共137课时 | 8.5万人学习
共6课时 | 6.9万人学习
共13课时 | 0.8万人学习
共79课时 | 151万人学习
共6课时 | 53.3万人学习
共4课时 | 0.6万人学习
最新文章
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部