JavaScript設計模式-- 迭代器(Iterator)模式

定義: 提供一個可簡單操作的介面, 用以不用暴露資料來源方法去更動資料。使用者能透過操作介面對資料做更動(但又能保護原始資料不被修改到)。

e.g.

var egg = (function() {

var index = 0;
var data = [1, 2, 3, 4, 5];                                 // 外部無法修改data
var 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;                                 // 回傳Boolean

},

rewind: function() {                                     //  歸零動作

index = 0;

},

current: function() {

return data[index];

}

};

})();

egg.rewind();

while(egg.hasNext()) {
console.log(egg.current());                      // 1 2 3 4 5
egg.next();
}



// 如果未來想新增資料,

只需在var data = [1, 2, 3, 4, 5]; 改為 var data = [1, 2, 3, 4, 5, 6, 7, 8, 9];

這樣 console.log(egg.current());                   // 1, 2, 3, 4, 5, 6, 7, 8, 9




留言

熱門文章