迭代器模式 
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
示意图 

示例代码 
ts
interface Iterator<T> {
  first(): T;
  currentItem(): T;
  next(): T;
  isDone(): boolean;
}
class ConcreteIterator implements Iterator<number> {
  private index: number;
  constructor(private items: Array<number>) {
    this.index = 0;
  }
  first(): number {
    return this.items[0];
  }
  currentItem(): number {
    return this.items[this.index];
  }
  next(): number {
    const retVal = this.items[this.index];
    this.index += 1;
    return retVal;
  }
  isDone(): boolean {
    return this.index >= this.items.length;
  }
}interface Iterator<T> {
  first(): T;
  currentItem(): T;
  next(): T;
  isDone(): boolean;
}
class ConcreteIterator implements Iterator<number> {
  private index: number;
  constructor(private items: Array<number>) {
    this.index = 0;
  }
  first(): number {
    return this.items[0];
  }
  currentItem(): number {
    return this.items[this.index];
  }
  next(): number {
    const retVal = this.items[this.index];
    this.index += 1;
    return retVal;
  }
  isDone(): boolean {
    return this.index >= this.items.length;
  }
}优缺点 
优点 
- 访问一个聚合对象的内容而无需暴露它的内部表示。
 - 为遍历不同的聚合结构提供一个统一的接口(即支持多态迭代)。
 
缺点 
- 遍历的同时更改聚合对象可能会引发问题。
 - 对于某些特殊集合,使用迭代器可能比直接遍历的效率低。
 
使用场景 
- 当集合背后为复杂的数据结构,且希望对客户端隐藏其复杂性时(出于使用便利性或安全性的考虑),可以使用迭代器模式。