如何运用迭代器模式简化对复杂数据源的访问过程?
- 内容介绍
- 相关推荐
本文共计916个文字,预计阅读时间需要4分钟。
代器模式的核心作用,是将如何存和如何取分离。面对树、图、嵌套对象、自定义容器这类复杂数据源,你不必让业务代码直接递归遍历或手动维护指针,而应提供一个统一、稳定、可替换的访问入口——这就是迭代器。
明确分离职责:集合只管存储,迭代器专责遍历
集合类(Aggregate)不再承担遍历逻辑,只负责创建对应的迭代器实例。比如一个 CategoryTree 类,内部是多层子节点嵌套,它只需实现一个 getIterator() 方法,返回一个实现了标准接口的树迭代器对象。这样,即使将来把树结构换成图或扁平化缓存,只要迭代器接口不变,所有遍历调用都不用改。
- 集合类不暴露节点引用、父子关系、遍历状态等内部字段
- 迭代器持有对集合的弱引用或只读快照,避免外部干扰遍历过程
- 客户端只依赖
hasNext()和next()这类通用方法,不感知底层是 DFS 还是 BFS
为不同遍历策略提供独立迭代器实现
同一份数据,可能需要深度优先、广度优先、层级顺序、过滤后顺序等多种访问方式。把这些逻辑硬塞进集合类会污染其单一职责。
本文共计916个文字,预计阅读时间需要4分钟。
代器模式的核心作用,是将如何存和如何取分离。面对树、图、嵌套对象、自定义容器这类复杂数据源,你不必让业务代码直接递归遍历或手动维护指针,而应提供一个统一、稳定、可替换的访问入口——这就是迭代器。
明确分离职责:集合只管存储,迭代器专责遍历
集合类(Aggregate)不再承担遍历逻辑,只负责创建对应的迭代器实例。比如一个 CategoryTree 类,内部是多层子节点嵌套,它只需实现一个 getIterator() 方法,返回一个实现了标准接口的树迭代器对象。这样,即使将来把树结构换成图或扁平化缓存,只要迭代器接口不变,所有遍历调用都不用改。
- 集合类不暴露节点引用、父子关系、遍历状态等内部字段
- 迭代器持有对集合的弱引用或只读快照,避免外部干扰遍历过程
- 客户端只依赖
hasNext()和next()这类通用方法,不感知底层是 DFS 还是 BFS
为不同遍历策略提供独立迭代器实现
同一份数据,可能需要深度优先、广度优先、层级顺序、过滤后顺序等多种访问方式。把这些逻辑硬塞进集合类会污染其单一职责。

