文章目录
定义
迭代器模式(Iterator Pattern)是行为设计模式之一,它提供了一种访问集合对象元素的方式,而不需要暴露集合的内部表示。迭代器模式可以让你顺序地访问集合中的每个元素,而无需知道集合的底层实现。这种方式支持对不同类型的集合进行统一的操作,增加了程序的灵活性和可扩展性。
主要角色:
- Iterable(Iterable Interface): 定义了创建迭代器对象的接口。
- Iterator(Iterator Interface): 定义了遍历集合元素所需的方法,如hasNext()和next()。
- Concrete Iterable(Concrete Collection): 实现Iterable接口,负责创建对应的具体迭代器对象。
- Concrete Iterator: 实现Iterator接口,完成集合元素的遍历。
示例代码
在Java中,迭代器模式已经内建于语言本身,通过Iterable和Iterator接口实现。下面是一个简化的例子,展示如何自定义一个集合类并实现迭代器模式。
java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
// 具体的可迭代集合类
class CustomCollection implements Iterable<String> {
private List<String> items = new ArrayList<>();
public CustomCollection(String... elements) {
for (String element : elements) {
items.add(element);
}
}
@Override
public Iterator<String> iterator() {
return new CustomIterator();
}
// 内部类,实现迭代器
private class CustomIterator implements Iterator<String> {
private int index = 0;
@Override
public boolean hasNext() {
return index < items.size();
}
@Override
public String next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
return items.get(index++);
}
}
}
// 客户端代码
public class IteratorPatternDemo {
public static void main(String[] args) {
CustomCollection collection = new CustomCollection("A", "B", "C", "D");
// 使用迭代器遍历集合
for (String item : collection) {
System.out.println(item);
}
}
}