• 设计模式之迭代器模式


    文章目录

    定义

    迭代器模式(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)ARM的编程模式和7种工作模式
    人工智能、深度学习、机器学习常见面试题261~280
    mac gdb调试失败解决
    nacos - cloud 客户端服务注册
    2023/5/23总结
    在CentOS 7上安装JDK 17
    “暗蚊”黑产团伙通过国内下载站传播Mac远控木马攻击活动分析
    webRtc架构与目录结构
    Google Earth Engine(GEE)——两种线性回归计算(单变量linefit和多变量linearRegression)
    vue开启splitChunks分包处理
  • 原文地址:https://blog.csdn.net/youxiaxiaomage/article/details/139420945