解析JavaScript設計模型Iterator例項
這篇文章主要介紹了JavaScript設計模型Iterator例項解析,文中透過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
|
Iterator Pattern是一個很重要也很簡單的Pattern:迭代器!
我們可以提供一個統一入口的迭代器,Client只需要知道有哪些方法,或是有哪些Concrete Iterator,並不需要知道他們底層如何實作!現在就讓我們來開始吧!
起手式
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: Mapconstructor() { this.index = 0 this.dataStorage = new Map() } 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()) }
結論
會發現Iterator 1號 2號的結果都是一樣的!他們都只需要讓Client知道有hasNext、next就好,底層的實作不需要讓他們知道!
以上就是本文的全部內容,希望對大家的學習有所幫助。
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2681963/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript倒數計時程式碼例項JavaScript
- 原生javascript開發計算器例項JavaScript
- JavaScript 例項屬性JavaScript
- KafKa Java程式設計例項KafkaJava程式設計
- 設計模式例項程式碼設計模式
- 例項九— 除法器設計
- Jmeter beanshell程式設計例項JMeterBean程式設計
- JavaScript設計模式初探--單例設計模式JavaScript設計模式單例
- 好程式設計師分享JavaScript名稱空間模式例項詳解程式設計師JavaScript模式
- jQuery Ajax 例項 全解析jQuery
- Javascript設計模式之單例模式JavaScript設計模式單例
- Javascript設計模式(三)單例模式JavaScript設計模式單例
- Javascript 設計模式之單例模式JavaScript設計模式單例
- javascript設計模式一: 單例模式JavaScript設計模式單例
- Kotlin設計模式解析之單例Kotlin設計模式單例
- 好程式設計師web前端分享在HTML中使用JavaScript例項程式碼程式設計師Web前端HTMLJavaScript
- 例項解析網路程式設計中的另類記憶體洩漏程式設計記憶體
- Verilog設計技巧例項及實現
- JavaScript in運算子程式碼例項JavaScript
- JavaScript Iterator遍歷器JavaScript
- 理解設計模式之單例模式(Javascript)設計模式單例JavaScript
- Vue原始碼解析:Vue例項Vue原始碼
- java狀態模式例項解析Java模式
- Web安全之CSRF例項解析Web
- C++設計模式+例項視訊教程C++設計模式
- 設計模式 - 原則及例項講解設計模式
- 設計模式例項講解 - 里氏替換設計模式
- 設計模式例項講解 - 介面隔離設計模式
- 設計模式例項講解 - 依賴倒置設計模式
- 設計模式:命令模式(Command Pattern)及例項設計模式
- MySQL與MongoDB設計例項對比QYMySqlMongoDB
- JavaScript運動框架程式碼例項JavaScript框架
- JavaScript取餘數程式碼例項JavaScript
- JavaScript 阻止事件冒泡程式碼例項JavaScript事件
- Mybatis原始碼解析2—— 例項搭建MyBatis原始碼
- 設計模式使用例項(5)——建造者模式例項之資料庫連線管理設計模式資料庫
- 單例模式 | 程式設計師都想要探索的 Javascript 設計模單例模式程式設計師JavaScript
- shell script程式設計小結——附帶例項程式設計