中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何使用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

铅山县| 宜春市| 莱州市| 平谷区| 玉林市| 丽水市| 获嘉县| 奉化市| 丹东市| 广汉市| 荔波县| 龙山县| 景谷| 凤庆县| 北海市| 和顺县| 平谷区| 会泽县| 延吉市| 无为县| 九江市| 黎城县| 共和县| 渑池县| 桂平市| 湟源县| 满洲里市| 肥东县| 周口市| 开远市| 武隆县| 康马县| 无棣县| 兴和县| 和平区| 应用必备| 汪清县| 会泽县| 昆山市| 阳城县| 安吉县|