JavaScript設計模型Iterator實例解析
這篇文章主要介紹了JavaScript設計模型Iterator實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Iterator Pattern是一個很重要也很簡單的Pattern:迭代器!
我們可以提供一個統(tǒng)一入口的迭代器,Client只需要知道有哪些方法,或是有哪些Concrete Iterator,并不需要知道他們底層如何實作!現(xiàn)在就讓我們來開始吧!
起手式
Iterator最主要的東西就是兩個:hasNext、next。要讓Client知道是否還有下一個,和切換到下一個!
定義Interface
interface IteratorInterface {
index: number
dataStorage: any
hasNext(): boolean
next(): any
addItem(item: any): void
}
實作介面
下面的范例我將會使用Map、Array這兩個常見的介面實作。
class iterator1 implements IteratorInterface {
index: number
dataStorage: any[]
constructor() {
this.index = 0
this.dataStorage = []
}
hasNext(): boolean {
return this.dataStorage.length > this.index
}
next(): any {
return this.dataStorage[this.index ++]
}
addItem(item: any): void {
this.dataStorage.push(item)
}
}
// map
class iterator2 implements IteratorInterface {
index: number
dataStorage: Map<number, any>
constructor() {
this.index = 0
this.dataStorage = new Map<number, any>()
}
hasNext(): boolean {
return this.dataStorage.get(this.index) != undefined
}
next(): any {
return this.dataStorage.get(this.index ++)
}
addItem(item: any): void {
this.dataStorage.set(this.dataStorage.size, item)
}
}
Client
我沒有實作一個Client,所以我是直接new一個類別出來直接使用!
const i = new iterator1()
i.addItem(123)
i.addItem(456)
i.addItem('dolphin')
while(i.hasNext()){
console.log(i.next())
}
console.log(`====================`)
const i2 = new iterator2()
i2.addItem(123)
i2.addItem(456)
i2.addItem('dolphin')
while(i2.hasNext()){
console.log(i2.next())
}
結論
會發(fā)現(xiàn)Iterator 1號 2號的結果都是一樣的!他們都只需要讓Client知道有hasNext、next就好,底層的實作不需要讓他們知道!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
bootstrap中selectpicker下拉框使用方法實例
這篇文章主要給大家介紹了關于bootstrap中selectpicker下拉框使用的相關資料,文中通過示例介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-03-03
BootStrap的select2既可以查詢又可以輸入的實現(xiàn)代碼
這篇文章主要介紹了bootstrap的select2既可以查詢又可以輸入的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02
JavaScript動態(tài)插入script的基本思路及實現(xiàn)函數(shù)
偶爾需要動態(tài)插入javascript代碼的需求,基本思路是動態(tài)創(chuàng)建一個script標簽,設置其src屬性,type屬性等,需要的朋友可以參考下2013-11-11
ie中js創(chuàng)建checkbox默認選中問題探討
js創(chuàng)建checkbox默認選中在某些特殊情況下還是比較實用的,下面有個不錯的示例,大家可以參考下2013-10-10
JSON傳遞bool類型數(shù)據(jù)的處理方式介紹
如果服務器端生成的JSON中有bool類型的數(shù)據(jù)時,到客戶端解析時出現(xiàn)了小小的問題,下面簡單為大家介紹下正確的處理方式2013-09-09

