JS设计模式之迭代器模式
来源:互联网 发布:东南亚妹子 知乎 编辑:程序博客网 时间:2024/05/09 08:47
介绍
迭代器模式(Iterator):提供一种方法顺次访问聚合对象中各个元素,同时不暴露对象内部细节。
迭代器模式的几个特点:
- 访问一个聚合对象的内容而无需暴露它的内部细节。
- 为遍历不同的集合结构提供一个统一的接口,将内部集合的改变和访问接口进行分离,使其互不影响。
- 遍历的同时更改迭代器所在的集合结构可能会导致问题。
正文
代码中聊
var agg = (function () { var index = 0, data = [1, 2, 3, 4, 5], length = data.length; return { next: function () { var element; if (!this.hasNext()) { return null; } element = data[index]; index = index + 2; return element; }, hasNext: function () { return index < length; }, rewind: function () { index = 0; }, current: function () { return data[index]; } };} ());
使用
// 迭代的结果是:1,3,5while (agg.hasNext()) { console.log(agg.next());}//当然,你也可以通过额外的方法来重置数据,然后再继续其它操作:// 重置agg.rewind();console.log(agg.current()); // 1
总结
迭代器的使用场景是:对于集合内部结果常常变化各异,不想暴露其内部结构的话,但又想让客户代码透明的访问其中的元素,这种情况下可以考虑使用迭代器模式。
0 0
- js设计模式之迭代器模式
- JS设计模式之迭代器模式
- JS设计模式之组合模式
- JS设计模式之门面模式
- JS设计模式之适配器模式
- JS设计模式之装饰者模式
- JS设计模式之享元模式
- JS设计模式之代理模式
- JS 设计模式之 单例模式
- js设计模式之装饰模式
- JS设计模式之构造函数模式
- JS设计模式之单例模式
- JS设计模式之建造者模式
- JS设计模式之工厂模式
- JS设计模式之外观模式
- JS设计模式之装饰者模式
- JS设计模式之桥接模式
- JS设计模式之状态模式
- FIRST集和FOLLOW集,FIRSTVT集和LASTVT集总结
- Implement stack using queue
- 理解SVG坐标系和变换:视窗,viewBox和preserveAspectRatio
- PHP 乱码问题
- 文件的应用
- JS设计模式之迭代器模式
- Scalaz(44)- concurrency :scalaz Future,尚不完整的多线程类型
- 排序算法之二:选择排序之【简单选择排序】
- J-Robot,能走、能跳舞的机器人
- 第八周 项目3 输入五组学生的姓名和成绩,输出最大值和最小值
- viewpager无限轮播、加小圆点
- jzptab[bzoj2693]
- C#重写GetHashCode()
- 求三组长方体的表面积和体积