亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

拉萨市| 无为县| 江安县| 富阳市| 汉寿县| 白沙| 临颍县| 河北区| 县级市| 黑龙江省| 长寿区| 姚安县| 临桂县| 娄底市| 赤水市| 吉木萨尔县| 台湾省| 个旧市| 乌兰县| 襄城县| 无为县| 塔城市| 克拉玛依市| 景德镇市| 连云港市| 奉新县| 栾城县| 日土县| 孝昌县| 万全县| 涪陵区| 丘北县| 宝鸡市| 沧源| 隆安县| 霍城县| 二手房| 如皋市| 横峰县| 霍山县| 河北区|