迭代器模式
迭代器模式(Iterator)巍糯,提供一種方法順序訪問一個聚合對象中的各種元素,而又不暴露該對象的內(nèi)部表示客扎。
模式作用:
- 為遍歷不同的集合結(jié)構(gòu)提供一個統(tǒng)一的接口,從而支持同樣的算法在不同的集合結(jié)構(gòu)上進行操作
- 對于集合內(nèi)部結(jié)果常常變化各異,我們不想暴露其內(nèi)部結(jié)構(gòu)的話,但又想讓客戶代碼透明地訪問其中的元素,這種情況下我們可以使用迭代器模式
注意事項:
- 一般的迭代,我們至少要有2個方法,hasNext()和Next(),這樣才能做到遍歷所有對象
- 遍歷的同時更改迭代器所在的集合結(jié)構(gòu)可能會導致問題(比如C#的foreach不允許修改item)
例子:
var arr = ["1", "2", "3"];
var diedai = (function() {
var length = arr.length,
index = 0;
return {
hasNext: function() {
return index < length;
},
next: function() {
var data = arr[index];
index = index + 1;
return data;
},
reset: function() {
index = 0;
}
}
})();
while (diedai.hasNext()) {
console.log(diedai.next()) //1,2,3
}