91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用javascript中的迭代器模式

發布時間:2020-08-03 10:42:08 來源:億速云 閱讀:110 作者:小豬 欄目:web開發

這篇文章主要講解了如何使用javascript中的迭代器模式,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

介紹:迭代器模式是一種使用頻率非常高的設計模式,通過引入迭代器,可以將數據的遍歷功能從聚合對象中分離出來。迭代器模式用于順序訪問集合對象的元素,不需要知道集合對象的底層表示。

定義:提供一種方法來訪問聚合對象,而不用暴露這個對象的內部表示,其別名為游標(Cursor)。迭代器模式是一種對象行為型模式。

場景:我們做一個百家姓的迭代器

示例:

function NameRepository(){
  var names = ['趙','錢','孫','李'];
 
  this.getIterator = function(){
    return new NameIterator();
  }
 
  function NameIterator(){
    var index = 0;
    //判斷是否存在下一個元素
    this.hasNext = function(){
      return index < names.length;
    }
    //將游標指向第一個元素
    this.first = function(){
      index = 0;
    }
    //獲取游標指向的當前元素
    this.currentItem = function(){
      return names[index];
    }
    this.next = function(){
      if(this.hasNext()){
        return names[index++]
      }
      return null;
    }
  }
}
 
var nameRepository = new NameRepository();
for(var iter = nameRepository.getIterator(); iter.hasNext();){
  console.log(iter.next())
}
// 趙
// 錢
// 孫
// 李

例子中NameIterator稱為具體迭代器,它實現了對聚合對象的遍歷,通過游標index來記錄聚合對象當前位置,游標通常為一個表示位置的非負整數。

需要注意的是迭代器的接口設計非常重要,一方面要充分滿足各種遍歷操作的要求,另一方面又不能包含太多方法。

迭代器模式總結:

優點:
* 支持以不同的方式遍歷一個聚合對象,在同一個聚合對象上可以定義多種遍歷方式
* 迭代器簡化了聚合類,原有的聚合對象不需要自行提供數據遍歷方法。

缺點:
* 迭代器模式將存儲數據和遍歷數據的職責分離,一定程度增加了系統的復雜性
* 迭代器設計難度較大,需要充分考慮可擴展性。

適用場景:
* 訪問一個聚合對象的內容而無須暴露它的內部表示。
* 需要為一個聚合對象提供多種遍歷方式
* 為便利不同的聚合結構提供一個統一的接口,為不同的聚合結構實現不同的遍歷方式。

看完上述內容,是不是對如何使用javascript中的迭代器模式有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河池市| 安化县| 克拉玛依市| 广平县| 万州区| 绥芬河市| 徐闻县| 乐亭县| 庆元县| 贵溪市| 治县。| 齐河县| 福州市| 永济市| 嘉义县| 永福县| 遂平县| 桃园县| 潮安县| 满洲里市| 健康| 永定县| 隆昌县| 天气| 三门县| 鄱阳县| 梓潼县| 五原县| 海林市| 聊城市| 五大连池市| 巨野县| 高安市| 五常市| 英吉沙县| 天祝| 定远县| 建湖县| 海淀区| 宾阳县| 天津市|