[关闭]
@songying 2018-07-04T14:57:34.000000Z 字数 613 阅读 1158

迭代器模式

设计模式


迭代器模式目前已经是一个没落的模式,没有人会单独写一个迭代器。

定义

它提供一种方法访问容器对象中的各种元素,而又不需暴露该对象的内部细节。迭代器是为容器服务的。

在迭代器模式中,容器只要管理增减元素就可以了,需要遍历时交由迭代器进行。

迭代器模式中的各个角色

  1. Iterator 抽象迭代器
    抽象迭代器负责访问和遍历元素的接口,而且基本上是有固定的3个方法: first()获取第一个元素, next()访问下一个元素, isDone()是否已经访问到底部。

  2. ConcreteIterator 具体迭代器

具体迭代器角色要实现迭代器接口,完成容器元素的遍历。

  1. Aggregate 抽象容器
    容器角色负责提供创建具体迭代器角色的接口,必然提供一个类似 createIterator()这样的方法,在Java中一般是iterator方法。

  2. Concrete Aggregate 具体容器
    具体容器实现容器接口定义的方法,创建出容纳迭代器的对象。

通用代码

1. 抽象迭代器

  1. public interface Iterator {
  2. //遍历到下一个元素
  3. public Object next();
  4. //是否已经遍历到尾部
  5. public boolean hasNext();
  6. //删除当前指向的元素
  7. public boolean remove();
  8. }

2. 具体迭代器

3. 抽象容器

4. 具体容器

5. 场景类

最佳实践

如果是开发者,尽量不要自己写迭代器模式,使用java提供的Iterator就能满足要求了。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注