23种设计模式-行为型模式之迭代器模式(Java版本)
Java 迭代器模式(Iterator Pattern)详解
🧠 什么是迭代器模式?
迭代器模式是一种行为型设计模式,它提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。
🎯 使用场景
- 遍历集合对象(如 List、Set、Map)
- 需要统一不同容器的遍历方式
- 不希望暴露集合内部结构
🏗️ 模式结构
- Iterator(迭代器接口):定义访问和遍历元素的接口
- ConcreteIterator(具体迭代器):实现迭代器接口,记录遍历状态
- Aggregate(聚合接口):创建迭代器对象
- ConcreteAggregate(具体聚合类):实现聚合接口,返回具体迭代器
✅ 示例:自定义聚合对象
迭代器接口
public interface Iterator<E> {boolean hasNext();E next();
}
聚合接口
public interface Aggregate<E> {Iterator<E> createIterator();
}
具体聚合类
import java.util.ArrayList;
import java.util.List;public class NameRepository implements Aggregate<String> {private List<String> names = new ArrayList<>();public NameRepository() {names.add("Tom");names.add("Jerry");names.add("Alice");}@Overridepublic Iterator<String> createIterator() {return new NameIterator();}private class NameIterator implements Iterator<String> {private int index = 0;@Overridepublic boolean hasNext() {return index < names.size();}@Overridepublic String next() {return hasNext() ? names.get(index++) : null;}}
}
客户端使用
public class Main {public static void main(String[] args) {NameRepository repo = new NameRepository();Iterator<String> iterator = repo.createIterator();while (iterator.hasNext()) {System.out.println("Name: " + iterator.next());}}
}
✅ 优点
- 封装集合遍历细节
- 支持多种遍历方式
- 遵循单一职责原则(遍历与集合解耦)
⚠️ 缺点
- 每种集合都需要实现迭代器,增加代码量
- 不支持逆向遍历(需扩展接口)
🧩 使用建议
Java 中已有内置迭代器(如 Iterator<T>
接口),但理解其设计思想有助于掌握设计模式的解耦思想与开放封闭原则。