当前位置: 首页 > article >正文

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

一、什么是迭代器模式

        迭代器模式,顾名思义,同样的为了让大家更加了解啥是迭代器。我们通过电影情结来说明,不知道大家有没有看过一个剧烧脑的科幻大片--《盗梦空间》。影片讲述了由造梦师(莱昂纳多·迪卡普里奥扮演的)带领特工团队进入他人梦境,从潜意识中盗取机密并重塑他人梦境的故事。其中个东西叫做造梦机,无论是谁(稍微不太准确),加以培训(使用造梦机)都可以进入多层梦境。这就是个典型的迭代器模式。盗梦空间中团队成员通过造梦机在不同的梦境层次之间穿梭,这种机制很好地体现了迭代器模式的核心思想。每次使用“造梦机”进入下一层梦境,都可以看作是对梦境层次集合的一次遍历操作。这种模式特别适用于需要遍历集合的场景。

        可以这么说,谁使用了 造梦机都会 进入迭代模式(梦境),并做一些处理,植入一些潜意识或者获得一些信息。

二、为什么使用迭代器模式

迭代器模式使得团队成员可以灵活地在不同的梦境层次之间穿梭,完成任务操作,而无需深入了解梦境层次的内部结构。

  1. 访问聚合对象的内容:当需要访问一个聚合对象的内容,而不需要暴露其内部的表示时,迭代器模式非常适用。团队成员通过造梦机访问梦境层次的内容,而无需了解梦境层次的具体实现细节。

  2. 支持多种遍历方式:当需要为聚合对象提供多种遍历方式时,迭代器模式可以提供统一的接口。团队成员可以通过造梦机选择不同的遍历方式,如正向遍历、反向遍历、跳跃遍历等,而不需要修改梦境层次结构的代码。

  3. 为遍历不同的聚合结构提供统一接口:当需要遍历不同类型的聚合结构时,迭代器模式可以提供统一的接口。团队成员可以使用统一的接口来遍历不同的梦境层次结构,而无需关心具体的结构实现。

三、迭代器模式示例

  1. 迭代器(Iterator 造梦机规范:通过造梦机,团队成员可以在不同的梦境层次之间穿梭。造梦机提供了遍历梦境层次的逻辑。

    public interface Iterator {
        boolean hasNext();
        Object next();
    }
  2. 具体迭代器(ConcreteIterator)

    具体的梦境穿梭机制:造梦机的具体实现,提供了进入下一层梦境(next())和检查是否还有下一层梦境(hasNext())的功能。public class DreamLevelIterator implements Iterator { private List<String> levels; private int index; public DreamLevelIterator(List<String> levels) { this.levels = levels; this.index = 0; } @Override public boolean hasNext() { return index < levels.size(); } @Override public Object next() { if (hasNext()) { return levels.get(index++); } return null; } }
  3. 聚合接口(Aggregate 梦境层次结构:定义了创建迭代器的方法,即如何通过造梦机进入梦境。

    public interface Aggregate {
        Iterator createIterator();
    }
  4. 具体聚合类(ConcreteAggregate 具体的梦境层次:实现了聚合接口,提供了梦境层次的集合,即团队成员可以进入的不同梦境。

    import java.util.ArrayList;
    import java.util.List;
    
    public class DreamLevels implements Aggregate {
        private List<String> levels = new ArrayList<>();
    
        public DreamLevels() {
            levels.add("第一层梦境");
            levels.add("第二层梦境");
            levels.add("第三层梦境");
            levels.add("第四层梦境");
        }
    
        @Override
        public Iterator createIterator() {
            return new DreamLevelIterator(levels);
        }
    
    }

    通过这个代码示例,我们可以清晰地看到迭代器模式的核心优势。迭代器模式通过将集合的遍历逻辑从集合本身分离出来,提供了一种统一的方式访问不同类型的集合。这种模式特别适用于需要遍历集合的场景,使得客户端代码可以独立于集合的类型。


http://www.kler.cn/a/522769.html

相关文章:

  • 【win11】解决msrdc.exe窗口启动导致周期性失去焦点
  • 危机13小时:追踪一场GitHub投毒事件
  • Vue.js组件开发-实现下载动态进度条
  • 从AD的原理图自动提取引脚网络的小工具
  • 渗透测试-WAF是什么以及原理解释 waf功能详解
  • AUTOSAR
  • 构建自定义 AI 模型服务:集成到 Spring AI 处理特定任务
  • 算法刷题Day28:BM66 最长公共子串
  • AAAI2024论文合集解读|Multi-granularity Causal Structure Learning-water-merged
  • 82,【6】BUUCTF WEB .[CISCN2019 华东南赛区]Double Secret
  • 电脑怎么格式化?格式化详细步骤
  • App UI自动化--Appium学习--第一篇
  • 【机器学习】自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • LabVIEW相位差测量系统
  • [微服务]服务保护原理
  • Redis数据库笔记——数据类型及其底层实现
  • stm32内存溢出怎么办
  • 如何在AWS上部署一个Web应用?
  • 【设计模式-行为型】备忘录模式
  • 《CPython Internals》读后感
  • 使用Python和Qt6创建GUI应用程序--关于Qt的一点介绍
  • WordPress event-monster插件信息泄露漏洞复现(CVE-2024-11396)(附脚本)
  • 【MySQL】 数据类型
  • Hive详细讲解-各类函数速通
  • GO 库与框架篇
  • Vue 3 30天精进之旅:Day 06 - 表单输入绑定