<aside>
💡
迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示
</aside>
- 迭代器模式为遍历的不同聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口
结构图

- 迭代器接口(Iterator)
- 定义访问和遍历元素的接口
- 通常会包括
hasNext()
方法用于检查是否还有下一个元素,以及next()
方法用于获取下一个元素。有的还会实现获取第一个元素以及获取当前元素的方法。
- 具体迭代器(ConcreateIterator)
- 抽象聚合类(Aggregate)
- 定义了创建迭代器的接口,包括一个
createIterator()
方法用于创建一个迭代器对象。
- 具体聚合类(ConcreteAggregate)
- 实现在抽象聚合类中声明的
createIterator()
方法,返回一个与具体聚合对应的具体迭代器
优缺点
优点
- 迭代器模式是一种通用的设计模式,其封装性强,简化了客户端代码,客户端不需要知道集合的内部结构,只需要关心迭代器和迭代接口就可以完成元素的访问。
缺点
- 引入迭代器模式会增加额外的类,每增加一个集合类,都需要增加该集合对应的迭代器,这也会使得代码结构变得更加复杂。
应用场景
- 当需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑使用迭代器模式
- 需要对聚集有多种方式遍历时,也可以考虑使用迭代器模式
- 许多编程语言和框架都使用了这个模式提供一致的遍历和访问集合元素的机制。
题目
https://kamacoder.com/problempage.php?pid=1099