解析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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java XML程式設計例項解析JavaXML程式設計
- 機器學習處理流程、特徵工程,模型設計例項機器學習特徵工程模型
- javascript 計算器程式碼例項JavaScript
- [全程建模]設計模型和UML應用中的例項分析模型
- Java解析Excel例項解析JavaExcel
- Pull解析例項
- 原生javascript開發計算器例項JavaScript
- JavaScript倒數計時程式碼例項JavaScript
- UML用例圖例項解析
- 談談設計模式 —— Iterator設計模式
- JavaScript設計模式初探--單例設計模式JavaScript設計模式單例
- Jmeter beanshell程式設計例項JMeterBean程式設計
- 設計模式例項程式碼設計模式
- KafKa Java程式設計例項KafkaJava程式設計
- 資料庫設計例項資料庫
- JavaScript 常見設計模式解析JavaScript設計模式
- javascript計算字串長度程式碼例項JavaScript字串
- JavaScript春節倒數計時程式碼例項JavaScript
- javascript柱狀統計圖程式碼例項JavaScript
- JavaScript 例項屬性JavaScript
- JavaScript 動畫效果例項JavaScript動畫
- JavaScript單例模式概念與例項JavaScript單例模式
- 好程式設計師分享JavaScript名稱空間模式例項詳解程式設計師JavaScript模式
- Shell程式設計入門例項程式設計
- Qt 中Socket程式設計例項QT程式設計
- android socket程式設計例項Android程式設計
- The MySQL C API程式設計例項MySqlAPI程式設計
- .Net設計模式例項詳解設計模式
- XML程式設計例項(二) (轉)XML程式設計
- Java&CORBA程式設計例項JavaORB程式設計
- corba程式設計簡單例項ORB程式設計單例
- javascript設定cookie立即過期程式碼例項JavaScriptCookie
- javascript設定或者獲取cookie程式碼例項JavaScriptCookie
- jQuery Ajax 例項 全解析jQuery
- javascript設計模式一: 單例模式JavaScript設計模式單例
- Javascript 設計模式之單例模式JavaScript設計模式單例
- Javascript設計模式之單例模式JavaScript設計模式單例
- Javascript設計模式(三)單例模式JavaScript設計模式單例