
以下是 迭代器模式 (Iterator Pattern) 的详细介绍,包含定义、优缺点、应用场景及代码实现:
List、Set 通过 Iterator 遍历元素。
 以下通过 自定义书架的迭代遍历 案例演示迭代器模式:
/**
 * 迭代器接口:定义遍历集合的方法
 */
public interface Iterator<T> {
    boolean hasNext();    // 是否还有下一个元素
    T next();             // 获取下一个元素
    void remove();        // 移除当前元素(可选实现)
}/**
 * 聚合接口:定义创建迭代器的方法
 */
public interface Aggregate<T> {
    Iterator<T> createIterator();
}import java.util.ArrayList;
import java.util.List;
/**
 * 具体聚合类:书架(存储书籍)
 */
public class BookShelf implements Aggregate<Book> {
    private final List<Book> books = new ArrayList<>();
    // 添加书籍
    public void addBook(Book book) {
        books.add(book);
    }
    // 创建迭代器(正序)
    @Override
    public Iterator<Book> createIterator() {
        return new BookShelfIterator(this);
    }
    // 获取书籍数量
    public int size() {
        return books.size();
    }
    // 根据索引获取书籍
    public Book getBookAt(int index) {
        return books.get(index);
    }
}
/**
 * 书籍类(数据模型)
 */
public class Book {
    private final String title;
    public Book(String title) {
        this.title = title;
    }
    public String getTitle() {
        return title;
    }
}/**
 * 具体迭代器类:正序遍历书架
 */
public class BookShelfIterator implements Iterator<Book> {
    private final BookShelf bookShelf;
    private int currentIndex = 0;
    public BookShelfIterator(BookShelf bookShelf) {
        this.bookShelf = bookShelf;
    }
    @Override
    public boolean hasNext() {
        return currentIndex < bookShelf.size();
    }
    @Override
    public Book next() {
        Book book = bookShelf.getBookAt(currentIndex);
        currentIndex++;
        return book;
    }
    @Override
    public void remove() {
        throw new UnsupportedOperationException("该迭代器不支持删除操作");
    }
}public class Client {
    public static void main(String[] args) {
        // 创建书架并添加书籍
        BookShelf shelf = new BookShelf();
        shelf.addBook(new Book("Java 编程思想"));
        shelf.addBook(new Book("设计模式:可复用面向对象软件的基础"));
        shelf.addBook(new Book("Effective Java"));
        // 获取迭代器并遍历
        Iterator<Book> iterator = shelf.createIterator();
        while (iterator.hasNext()) {
            Book book = iterator.next();
            System.out.println("书名:" + book.getTitle());
        }
    }
}书名:Java 编程思想
书名:设计模式:可复用面向对象软件的基础
书名:Effective Java+----------------+          +----------------+
|   Aggregate    | <------+ |   Iterator     |
+----------------+          +----------------+
| +createIterator()         | +hasNext()     |
+----------------+          | +next()        |
                            | +remove()      |
                            +----------------+
       ^                          ^
       |                          |
+----------------+          +----------------+
| ConcreteAggregate        | ConcreteIterator|
+----------------+          +----------------+
| +createIterator()         | -currentIndex  |
+----------------+          +----------------+Iterator<T>)。
 modCount 校验版本号)。
 迭代器模式在 Java 生态中广泛应用,例如:
List.iterator()、Set.iterator()。
 DirectoryStream 遍历目录内容。
 ResultSet 逐行读取查询结果。
 掌握该模式能显著提升代码的可维护性和扩展性,尤其是在处理复杂数据结构时。