设计模式之迭代器模式

文章目录

定义

迭代器模式(Iterator Pattern)是行为设计模式之一,它提供了一种访问集合对象元素的方式,而不需要暴露集合的内部表示。迭代器模式可以让你顺序地访问集合中的每个元素,而无需知道集合的底层实现。这种方式支持对不同类型的集合进行统一的操作,增加了程序的灵活性和可扩展性。
主要角色:

  • Iterable(Iterable Interface): 定义了创建迭代器对象的接口。
  • Iterator(Iterator Interface): 定义了遍历集合元素所需的方法,如hasNext()和next()。
  • Concrete Iterable(Concrete Collection): 实现Iterable接口,负责创建对应的具体迭代器对象。
  • Concrete Iterator: 实现Iterator接口,完成集合元素的遍历。

示例代码

在Java中,迭代器模式已经内建于语言本身,通过Iterable和Iterator接口实现。下面是一个简化的例子,展示如何自定义一个集合类并实现迭代器模式。

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);
        }
    }
}

相关推荐

  1. 设计模式模式

    2024-06-08 22:34:04       36 阅读
  2. 设计模式模式

    2024-06-08 22:34:04       31 阅读
  3. 【前端设计模式模式

    2024-06-08 22:34:04       58 阅读
  4. 【软件设计模式与组合模式

    2024-06-08 22:34:04       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 22:34:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 22:34:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 22:34:04       87 阅读
  4. Python语言-面向对象

    2024-06-08 22:34:04       96 阅读

热门阅读

  1. 简单使用phpqrcode 生成二维码图片

    2024-06-08 22:34:04       25 阅读
  2. 自然资源-国土空间规划中的各类边界

    2024-06-08 22:34:04       32 阅读
  3. RK3588 Android13自定义一个按键实现长按短按

    2024-06-08 22:34:04       26 阅读
  4. Elasticsearch reindex用管道转换类型

    2024-06-08 22:34:04       31 阅读
  5. 代码随想录训练营Day30

    2024-06-08 22:34:04       30 阅读
  6. 推荐一个网安资源学习网站

    2024-06-08 22:34:04       33 阅读
  7. SCAU 数据结构 实验四 树

    2024-06-08 22:34:04       24 阅读
  8. tensorRT 实现推理加速(算子合并、量化)

    2024-06-08 22:34:04       33 阅读