以下是用javascript模擬的迭代器模式。
var iterator = (function(){
var index = 0,
data = ['one','two','three','four','five','six','seven','eight','nine','ten'],
length = data.length;
return {
next: function(){
var element;
if(!this.hasNext()){
return null;
}
element = data[index];
index = index + 1;
return element;
},
hasNext: function(){ //判斷是否有下一個數據
return index < length;
},
current: function(){ //獲取到當前元素
return data[index];
},
rewind: function(){ //重置指針
index = 0 ;
}
};
})();
while(iterator.hasNext()){
console.log(iterator.next());
}
//output
one
two
three
four
five
six
seven
eight
nine
ten
此段代碼不僅用到了迭代器模式,還有即時函數模式,模塊模式,靜態私有成員等等模式。
reference:《javascript设计模式》 Stoyan Stefanov 著,陈新 译