简介
迭代器模式就是提供一种顺序访问对象的方式,当前主流语言基本都已经内置了迭代器,比如JavaScript中的forEach
,迭代器模式分为内部迭代器模式和外部迭代器模式。内部迭代器将实现放在内部,隐藏实现原理,而外部迭代器模式则需要显示的调用,类似JavaScript的generator
,需要显示的调用next()
。也可以自己实现,在某些时候避免耦合性大的场景使用。
function createIterator(arr){
let index = 0;
return {
next(){
return index<arr.length?
{value:arr[index++],done:false}:
{value:undefined,done:true};
}
}
}
const arr = [1,2,3]
const it = createIterator(arr);
console.log(it.next())// { value: 1, done: false }
console.log(it.next())// { value: 2, done: false }
console.log(it.next())// { value: 3, done: false }
console.log(it.next())// { value: undefined, done: true }
使用场景
迭代器是一种设计模式,非常简单,常用于需要顺序执行的一些操作。比如大量的if-else且存在顺序的场景,则可以将其包装,顺序传入,顺序调用。将if-else中的业务代码抽离,减少耦合性。