Iterator Design

Java Design-pattern Iterator implementation

Posted by Boyu Cai on Thursday, April 28, 2022

迭代器模式

核心思想

  • 提供外部访问接口,而不暴露内部对象
  • 可扩展的遍历方式
  • 可遍历不同种类的对象

类图设计

迭代器模式.drawio

  • Aggregate:聚集的抽象类
  • ConcreteAggregate:具体的聚集类对象,来扩展遍历方式
  • Iterator:迭代器对象接口
  • Concretelterator:实现迭代器接口

代码见仓库:https://github.com/dmucby/Design-pattern/tree/master/src/Iterator

Java 中迭代器设计

Iterator 源码

image-20220428124329520

接口约定:

  • HasNext
  • Next
  • remove

ListIterator接口

public interface ListIterator<E> extends Iterator<E> {
    E next();
    boolean hasNext();
    boolean hasPrevious();
    E previous();
    int nextIndex();
    int previousIndex();
    void remove();
    void set(E e);
    void add(E e);
}

Iterator 进一步封装~

  • 提供向前遍历,获取前对象
  • 增加获取Index方法
  • 增添set add来授予更多权限