java - 迭代器模式的目的。我理解对了吗?

标签 java php oop design-patterns

我最近试图理解所谓的迭代器模式。

想想是否已经理解了它的目的,但我仍然不确定。所以请纠正我这一点:

迭代器模式的目的是抽象出数据所在的底层结构。 被存管。数据结构可以是数组、树、列表......

重要的方法是next()(返回一个对象)、hasNext()(返回一个 boolean 值)和remove()。

这些方法以适合所使用的数据结构的方式实现。所以开发商 谁使用迭代器实现类不必关心。只需使用提供的方法即可 每个迭代器实现类都相同。

我说得对吗?

最佳答案

您总结的内容是正确的。迭代器设计模式通过在集合和数据检索器之间提供迭代器接口(interface)来隐藏集合\聚合的底层复杂性。

接下来,我们可以通过定义迭代器的抽象来将其提升一个层次。这意味着我们可以编写迭代器以多种方式遍历同一个集合。例如:如果我们有一个二叉树集合,那么我们可以编写三个迭代器来进行中序、后序和前序遍历。

最后,迭代器模式还允许对正在迭代的集合进行抽象。这意味着可以为一系列集合实现一系列迭代器。

需要注意的更重要的事情是,迭代器足够了解集合的内部结构,以便能够对其进行迭代。集合实例有责任为自己创建正确的迭代器(在可能的迭代器系列之外)并将其返回给客户端。

如果您有兴趣阅读有关迭代器模式的更多信息,我已在我的博客上的一篇文章中深入解释了上述几点:http://www.javabrahman.com/design-patterns/iterator-design-pattern-in-java/

关于java - 迭代器模式的目的。我理解对了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34761991/

相关文章:

java - 需要设计建议以跳过对象类型转换

javascript - 使用原型(prototype) JavaScript - 最佳实践

java - 为什么不为 ArithmeticException 参数方法引发歧义

java - 无法使用 Eclipse 和 Tomcat 8.5 构建项目

java - Eclipse 格式化程序 - 多维数组初始化

java - 从 WebClient 访问时,为什么 REST 端点的处理程序会被访问两次?

php - 检测到服务的循环引用

php - 在脚本执行之间将 PHP 变量存储在内存中

java - 使用Java检查变量是否在两个数字之间

php - 选择开始年份和开始月份到结束年份和结束月份之间的数据?