JS设计模式之迭代器模式
2016-06-14 08:01
204 查看
介绍
迭代器模式(Iterator):提供一种方法顺次访问聚合对象中各个元素,同时不暴露对象内部细节。
迭代器模式的几个特点:
访问一个聚合对象的内容而无需暴露它的内部细节。
为遍历不同的集合结构提供一个统一的接口,将内部集合的改变和访问接口进行分离,使其互不影响。
遍历的同时更改迭代器所在的集合结构可能会导致问题。
正文
代码中聊
使用
总结
迭代器的使用场景是:对于集合内部结果常常变化各异,不想暴露其内部结构的话,但又想让客户代码透明的访问其中的元素,这种情况下可以考虑使用迭代器模式。
迭代器模式(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,5 while (agg.hasNext()) { console.log(agg.next()); } //当然,你也可以通过额外的方法来重置数据,然后再继续其它操作: // 重置 agg.rewind(); console.log(agg.current()); // 1
总结
迭代器的使用场景是:对于集合内部结果常常变化各异,不想暴露其内部结构的话,但又想让客户代码透明的访问其中的元素,这种情况下可以考虑使用迭代器模式。
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 设计模式之行为型模式 - 调用行为的传递问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- Ruby中的迭代器详解
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- Ruby中Block和迭代器的使用讲解
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- Lua中的迭代器浅析
- Lua中的迭代器和泛型for介绍
- 详解组合模式的结构及其在Ruby设计模式编程中的运用