定义
迭代器模式指提供一种方式,无需了解内部构造的情况下,按顺序访问其中每个元素。可以把迭代的过程从业务逻辑中分离出来。
内部迭代器和外部迭代器
- 内部迭代器:内部封装好规则,一次调用后,完成所有迭代内容。
- 外部迭代器:必须显示地控制请求迭代下一个元素。
迭代对象
可以为(类)数组Array和对象Object
实战例子
比如获取不同浏览器的上传组件。
首先获取IE上传组件,然后是Flash组件,发现Flash未安装又要使用基本的表单上传。这样的表达充斥着try catch和大量的if else条件判断。如果后续支持HTML5的新功能又要增加复杂度。此时就可以使用迭代器模式进行优化。
将获取不同的组件封装成对应的函数,如果失败就return false。使用迭代器进行遍及各个函数。最终返回返回值value不为false的对象。这样即使增加新的函数只需要将其加入到迭代对象中也就是参数arguments中就可以了。