设计模式之迭代器模式

迭代器模式

  1. 迭代器模式结构图:

  2. 示例代码:

    // 抽象迭代器
    public interface Iterator <E>{
    
        boolean hasNext();
    
        E next();
    }
    
    // 具体迭代器
    public class ConcreteIterator<E> implements Iterator<E>{
    
        private List<E> list;
        private int index = 0;
    
        public ConcreteIterator(List<E> list) {
            this.list = list;
        }
    
        @Override
        public boolean hasNext() {
            return index<list.size();
        }
    
        @Override
        public E next() {
            return list.get(index++);
        }
    }
    
    // 抽象容器
    public interface Aggregate<E> {
    
        boolean add(E element);
    
        boolean remove(E element);
    
        Iterator<E> iterator();
    }
    
    // 具体容器
    public class ConcreteAggregate<E> implements Aggregate<E>{
    
        private List<E> list = new ArrayList<>();
    
        @Override
        public boolean add(E element) {
            return list.add(element);
        }
    
        @Override
        public boolean remove(E element) {
            return list.remove(element);
        }
    
        @Override
        public Iterator<E> iterator() {
            return new ConcreteIterator<>(list);
        }
    }
    
    // 测试类
    public class IteratorTest {
    
        public static void main(String[] args) {
            ConcreteAggregate<String> aggregate = new ConcreteAggregate<>();
            aggregate.add("A");
            aggregate.add("B");
            aggregate.add("C");
            aggregate.add("D");
            Iterator<String> iterator = aggregate.iterator();
            while (iterator.hasNext()){
                System.out.println(iterator.next());
            }
        }
    }
    
    
  3. 总结:

    优点:简化集合对象接口,功能多样化,解偶迭代与集合;

    缺点:使用迭代器遍历较为繁琐,无需自己实现,使用现有API即可.

posted @   justKen  阅读(51)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示