当前位置: 首页> 科技> 能源 > 迭代器模式(Iterator Pattern)

迭代器模式(Iterator Pattern)

时间:2025/7/10 17:37:06来源:https://blog.csdn.net/yuiezt/article/details/140379167 浏览次数:1次

迭代器模式(Iterator Pattern)

定义

又称为游标模式(Cursor Pattern),它提供了一种顺序访问集合/容器对象元素的方法,而又无须暴露集合内部表示。

本质:抽离集合对象迭代行为到迭代器中,提供一致访问接口。

属于行为型模式。

适用场景

  1. 访问一个集合对象的内容而无需暴露它的内部表示
  2. 为遍历不同的集合结构提供一个统一的访问接口

标准示例

在这里插入图片描述

  • 迭代器(Iterator):定义访问和遍历元素的接口,通常包含如hasNext()(判断是否有下一个元素)、next()(返回下一个元素)等方法。
  • 具体迭代器(ConcreteIterator):实现迭代器接口,对聚合对象遍历时跟踪当前位置,并能够计算出待遍历的后继对象。
  • 聚合(Aggregate):定义创建相应迭代器对象的接口。
  • 具体聚合(ConcreteAggregate):实现创建相应迭代器的接口,返回一个具体迭代器对象。

代码:

public interface Iterator<E>{boolean hasNext();E next();
}
public class ConcreteIterator<E> implements Iterator<E>{private List<E> list;private int cursor = 0;public ConcreteIterator(List<E> list){this.list = list;}public boolean hasNext(){return this.cursor < this.list.size();}public E next(){return this.list.get(this.cursor ++);}
}
public interface IAggregate<E>{boolean add(E element);boolean remove(E element);Iterator<E> iterator();
}
public class ConcreteAggregate<E> implements IAggregate<E>{private List<E> list = new Arraylist<E>();public boolean add(E element){return this.list.add(element);}public boolean remove(E element){return this.list.remove(element);}public Iterator<E> iterator(){return new ConcreteIterator<E>(this.list);}
}
public class Test {public static void main(String[] args) {IAggregate<String> aggregate = new ConcreteAggregate<String>();aggregate.add("java");aggregate.add("python");aggregate.add("javascript");Iterator<String> iterator = aggregate.iterator();while(iterator.hasNext()){String element = iterator.next();System.out.println(element);}}
}

输出结果:

java
python
javascript
关键字:迭代器模式(Iterator Pattern)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: