扫码关注官方订阅号
正文
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.增加新的聚合类和迭代器类很方便,两个维度上可各自独立变化 TP-COUPON 导购系统 免费版 自从百度屏蔽淘宝客网站、淘宝抛弃淘宝客之后,个人站长集体陷入了恐慌之中。此时,什么值得买网的异军突起引起了广大个人站长的极大关注。做一个什么值得买一样的导购网站成了众多个人站长的一致心愿! TP-COUPON 导购系统 即是让个人站长实现此心愿的绝佳选择! 欢迎个人站长选用。V1.1版 更新记录:1.修正请求时查询淘宝店铺错误的bug2.删除一些无用的代码 下载 4.为不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上操作 缺点: 1.迭代器模式将存储数据和遍历数据的职责分离增加新的集合对象时需要增加对应的迭代器类,类的个数成对增加,在一定程度上增加系统复杂度 使用场景: 1.访问一个聚合对象内容而无须暴露它的内部显示 2.需要为聚合对象提供多种遍历方式 3.为遍历不同的聚合结构提供一个统一的接口
分析:想一下,如果把集合对象和对集合对象的操作放在一起,当我们想换一种方式遍历集合对象中元素时,就需要修改集合对象了,违背“单一职责原则”,而迭代器模式将数据结构和数据结构的算法分离开,两者可独立发展。
优点:
1.支持多种遍历方式。比如有序列表,我们根据需要提供正序遍历、倒序遍历两种迭代器。用户只需要得到我们的迭代器,就可以对集合执行遍历操作
2.简化了聚合类。由于引入了迭代器,原有的集合对象不需要自行遍历集合元素了
3.增加新的聚合类和迭代器类很方便,两个维度上可各自独立变化
自从百度屏蔽淘宝客网站、淘宝抛弃淘宝客之后,个人站长集体陷入了恐慌之中。此时,什么值得买网的异军突起引起了广大个人站长的极大关注。做一个什么值得买一样的导购网站成了众多个人站长的一致心愿! TP-COUPON 导购系统 即是让个人站长实现此心愿的绝佳选择! 欢迎个人站长选用。V1.1版 更新记录:1.修正请求时查询淘宝店铺错误的bug2.删除一些无用的代码
4.为不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上操作
缺点:
1.迭代器模式将存储数据和遍历数据的职责分离增加新的集合对象时需要增加对应的迭代器类,类的个数成对增加,在一定程度上增加系统复杂度
使用场景:
1.访问一个聚合对象内容而无须暴露它的内部显示
2.需要为聚合对象提供多种遍历方式
3.为遍历不同的聚合结构提供一个统一的接口
相关文章
如何判断工作时段是否跨至次日(Laravel + PHP 实战方案)
如何判断工作时间段是否跨越到次日(Laravel + PHP 实战方案)
PHP中字符串异或运算的ASCII码原理详解
如何在 PHP 中实现多级分类的嵌套显示与动态展开
PHP 中字符串异或运算的 ASCII 原理解析
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助手
PC软件
相关专题
本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。
10
2026.01.23
本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。
29
2026.01.22
本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。
21
本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。
本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。
13
本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。
11
本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。
8
本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。
55
本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。
9
热门下载
相关下载
精品课程
共137课时 | 9.2万人学习
共6课时 | 10.1万人学习
共13课时 | 0.9万人学习
共79课时 | 151.5万人学习
共6课时 | 53.4万人学习
共4课时 | 15.3万人学习
最新文章
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部