我最近试图理解所谓的Iterator模式。
想想是否理解了它的目的,但我仍然不确定。所以请对此纠正我:
迭代器模式的目的是抽象出数据所在的底层结构 被存管。数据结构可以是数组,树,列表......
它的重要方法是next()(返回一个对象),hasNext()(返回一个布尔值)和remove()。
这些方法以适合所用数据结构的方式实现。所以开发者 使用迭代器实现类的人不必关心。只需使用提供的方法即可 对于每个iterator-implement-class都是一样的。
我做对了吗?
答案 0 :(得分:2)
您总结的内容是正确的。迭代器设计模式通过在集合和数据检索器之间提供迭代器接口来隐藏集合\聚合的底层复杂性。
接下来,我们可以通过定义迭代器的抽象来提高这一级别。这意味着我们可以编写迭代器以多种方式遍历相同的集合。例如:如果我们有二叉树集合,那么我们可以为顺序,后序和前序遍历编写三个迭代器。
最后,Iterator模式允许对迭代的集合进行抽象。这意味着可以为一系列集合实现一系列迭代器。
需要注意的另一个重要事项是,一个interator足够了解集合的内部结构,以便能够迭代它。并且集合实例负责为自己创建正确的迭代器(在可能的迭代器系列之外)并将其返回给客户端。
如果您有兴趣阅读有关迭代器模式的更多信息,我已在博客上的一篇文章中深入解释了以上几点:http://www.javabrahman.com/design-patterns/iterator-design-pattern-in-java/
答案 1 :(得分:1)
是的,您的理解几乎涵盖了大部分内容。 要在更具技术性的场景中获得相同内容,请参阅IteratorDesignPattern https://sourcemaking.com/design_patterns/iterator