你好世界
  • 入门
  • 框架
  • Webpack
  • 模式
  • 知识点
  • 面试题
  • Koa
  • Java
  • Python
  • MongoDB
  • Redis
  • Algorithm
  • AI 概述
  • 机器学习
  • 深度学习
  • 自然语言处理
  • 关键词说明
  • 使用技巧
  • 本地模型安装及下载
  • 调试
  • 测试
  • GIT
  • Network
  • Linux
  • VSCode
  • GitHub
  • Mock
  • 入门
  • 框架
  • Webpack
  • 模式
  • 知识点
  • 面试题
  • Koa
  • Java
  • Python
  • MongoDB
  • Redis
  • Algorithm
  • AI 概述
  • 机器学习
  • 深度学习
  • 自然语言处理
  • 关键词说明
  • 使用技巧
  • 本地模型安装及下载
  • 调试
  • 测试
  • GIT
  • Network
  • Linux
  • VSCode
  • GitHub
  • Mock
  • DesignMode

    • 设计模式
    • 面向对象
    • UML 类图
    • 设计原则
    • 面试题分析
    • 工厂模式
    • 单例模式
    • 适配器模式
    • 装饰器模式
    • 代理模式
    • 外观模式(网关?)
    • 观察者模式
    • 迭代器模式
    • 状态模式
    • 其它设计模式
  • SoftwareArchitecturePatterns

    • SoftwareArchitecturePatterns (软件架构模式)
    • MVVC
    • MVC
    • MVP

迭代器模式

介绍

  • 顺序访问一个集合;
  • 使用者无需知道集合的内部结构(封装);

设计原则验证

  • 迭代器对象和目标对象分离;
  • 迭代器将使用者与目标对象隔离开;
  • 符合开放封闭原则;

示例

示例-11
class Iterator {
  constructor() {
    this.list = container.list;
    this.index = 0;
  }
  next(){
    if (this.hasNext()) {
      return this.list[this.index++]
    }
    return null;
  }
  hasNext(){
    if (this.index >= this.list.length) {
      return false
    }
    return true
  }
}

class Container {
  constructor(list) {
    this.list = list;
  }
  //  生成遍历器
  getIterator(){
    return new Iterator(this)
  }
}

// 测试

let arr = [1,2,3,4,5,6];
let container = new Container(arr);
let iterator = container.getIterator()
while (iterator.hasNext()) {
  console.log(iterator.next())
}

场景

  • ES6 Iterator
    • ES6 语法中,有序集合的数据类型已经有很多;
    • Array、Map、Set、String、TypedArray、arguments、NodeList;
    • 需要有一个统一的遍历接口来遍历所有数据类型;
    • Object不是有序集合,可以用Map代替;
最后更新时间: 3/7/22, 9:11 PM
贡献者: DESKTOP-ER5718D\zt
Prev
观察者模式
Next
状态模式