Java迭代器模式:正反向遍历数字集合

5星 · 超过95%的资源 需积分: 50 97 下载量 106 浏览量 更新于2024-10-05 1 收藏 2KB TXT 举报
"Java 迭代器模式实现正反向遍历" 在软件设计模式中,迭代器模式是一种行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在这个示例中,我们将看到如何使用 Java 实现一个迭代器,特别是支持正向和反向遍历。 迭代器模式的核心是`Iterator`接口,它定义了遍历集合的基本操作,如获取第一个元素、获取下一个元素、检查是否遍历完成以及获取当前元素。在提供的代码中,`Iterator`是一个抽象类,包含以下方法: 1. `public abstract Object First()`: 返回聚合对象的第一个元素。 2. `public abstract Object Next()`: 返回聚合对象的下一个元素。 3. `public abstract boolean IsDone()`: 判断是否已经遍历完所有元素,返回`true`表示遍历结束,`false`表示还有未遍历的元素。 4. `public abstract Object CurrentItem()`: 获取当前遍历到的元素。 `Aggregate`是另一个抽象类,通常代表聚合对象,它定义了创建迭代器的方法,但在这个例子中,`Aggregate`没有实现`CreateIterator()`方法,可能是因为具体的创建逻辑被放在了子类中。 接下来,有两个具体的迭代器实现:`ConcreteIterator1`和`ConcreteIterator1`。它们分别实现了正向和反向遍历: - `ConcreteIterator1`初始化时设置`current`为0,开始从第一个元素遍历。`First()`返回第一个元素,`Next()`将`current`加1并返回下一个元素,直到`IsDone()`判断当前索引是否超过聚合对象的大小。 - `ConcreteIterator2`与`ConcreteIterator1`类似,但初始化时设置`current`为聚合对象的最后一个元素的索引,使得`First()`返回最后一个元素,`Next()`减1来反向遍历。 在实际应用中,`ConcreteAggregate`类通常会是一个具体的集合类,如`ArrayList`或`LinkedList`,并且提供一个`get(int index)`方法来获取指定索引的元素,以及`Count()`方法来获取元素数量。这里省略了`ConcreteAggregate`的具体实现,因为重点在于迭代器的使用。 通过这个设计,我们可以方便地在不改变聚合对象的前提下,添加不同的遍历策略,例如添加更多的迭代器子类以支持其他遍历方式,如随机访问或按特定条件遍历。此外,迭代器模式还遵循了“开闭原则”,即对扩展开放,对修改关闭,这是面向对象设计的重要原则之一。