设计模式-行为型模式-迭代器模式

迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。[DP]

首先,定义一个接口Iterator,它包含了遍历聚合对象所需的方法:
public interface Iterator<T> {
    boolean hasNext(); // 是否有下一个元素
    T next(); // 返回下一个元素
}
然后,定义一个具体的迭代器实现,比如ConcreteIterator,它实现了Iterator接口,并持有一个对聚合对象的引用:
public class ConcreteIterator<T> implements Iterator<T> {
    private List<T> aggregation; // 持有聚合对象的引用
    private int currentIndex; // 当前遍历的位置

    public ConcreteIterator(List<T> aggregation) {
        this.aggregation = aggregation;
        this.currentIndex = 0;
    }

    @Override
    public boolean hasNext() {
        return currentIndex < aggregation.size();
    }

    @Override
    public T next() {
        if (hasNext()) {
            return aggregation.get(currentIndex++);
        }
        throw new NoSuchElementException("No more elements in the aggregation.");
    }
}

接下来,定义一个聚合对象接口Aggregation,它包含了一个创建迭代器的方法:
public interface Aggregation<T> {
    Iterator<T> createIterator(); // 创建迭代器
}
然后,定义一个具体的聚合对象实现,比如ConcreteAggregation,它实现了Aggregation接口,并持有一个元素列表:
import java.util.ArrayList;
import java.util.List;

public class ConcreteAggregation<T> implements Aggregation<T> {
    private List<T> elements = new ArrayList<>();

    public void add(T element) {
        elements.add(element);
    }

    public void remove(T element) {
        elements.remove(element);
    }

    @Override
    public Iterator<T> createIterator() {
        return new ConcreteIterator<>(elements);
    }
}
最后,我们演示如何使用聚合对象和迭代器来遍历元素:
public class Client {
    public static void main(String[] args) {
        // 创建聚合对象并添加元素
        Aggregation<String> aggregation = new ConcreteAggregation<>();
        aggregation.add("Apple");
        aggregation.add("Banana");
        aggregation.add("Cherry");

        // 获取迭代器
        Iterator<String> iterator = aggregation.createIterator();

        // 使用迭代器遍历聚合对象
        while (iterator.hasNext()) {
            String fruit = iterator.next();
            System.out.println(fruit);
        }
    }
}

 

相关推荐

  1. 设计模式行为设计模式——模式

    2024-03-14 09:20:02       18 阅读
  2. GO设计模式——18、模式行为

    2024-03-14 09:20:02       48 阅读
  3. 设计模式(014)行为模式

    2024-03-14 09:20:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 09:20:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 09:20:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 09:20:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 09:20:02       20 阅读

热门阅读

  1. 在 Amazon Bedrock 上使用 Anthropic Claude 系统 Prompt

    2024-03-14 09:20:02       19 阅读
  2. 小马哥yyds

    2024-03-14 09:20:02       16 阅读
  3. 2024-01-重学MySQL

    2024-03-14 09:20:02       19 阅读
  4. Horovod分布式深度学习框架

    2024-03-14 09:20:02       22 阅读
  5. 数据对比与处理利器——Pandas 实战

    2024-03-14 09:20:02       19 阅读
  6. 鸿蒙 线程模型

    2024-03-14 09:20:02       18 阅读