迭代器模式(Iterator Pattern)是设计模式中的一种行为型模式,它允许顺序访问一个集合对象中的元素,而无需暴露集合对象的内部结构。换句话说,迭代器模式提供了一个方法,能让你遍历集合中的元素,而无需知道底层实现细节。
hasNext()和next()。下面是一个使用Java实现迭代器模式的简单示例:
// 迭代器接口
public interface Iterator {
boolean hasNext(); // 是否有下一个元素
Object next(); // 获取下一个元素
}// 容器接口
public interface Aggregate {
Iterator createIterator(); // 创建迭代器
}// 具体容器类
public class ConcreteAggregate implements Aggregate {
private Object[] items;
private int size;
public ConcreteAggregate(int size) {
this.items = new Object[size];
this.size = size;
}
public void addItem(int index, Object item) {
if (index >= 0 && index < size) {
items[index] = item;
}
}
@Override
public Iterator createIterator() {
return new ConcreteIterator(this);
}
public Object getItem(int index) {
if (index >= 0 && index < size) {
return items[index];
}
return null;
}
public int getSize() {
return size;
}
}// 具体迭代器类
public class ConcreteIterator implements Iterator {
private ConcreteAggregate aggregate;
private int currentIndex = 0;
public ConcreteIterator(ConcreteAggregate aggregate) {
this.aggregate = aggregate;
}
@Override
public boolean hasNext() {
return currentIndex < aggregate.getSize();
}
@Override
public Object next() {
return hasNext() ? aggregate.getItem(currentIndex++) : null;
}
}public class Main {
public static void main(String[] args) {
ConcreteAggregate aggregate = new ConcreteAggregate(3);
aggregate.addItem(0, "Element 1");
aggregate.addItem(1, "Element 2");
aggregate.addItem(2, "Element 3");
Iterator iterator = aggregate.createIterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}Element 1
Element 2
Element 3迭代器模式是一种非常常见的设计模式,尤其适用于需要遍历集合对象时。通过使用迭代器,我们能够避免暴露集合的内部结构,使得代码更加模块化、灵活,也能支持多种遍历方式。
希望这个教程对你理解迭代器模式有所帮助!
如果您有任何问题或建议,欢迎留言讨论。