遍历——迭代器模式

article/2025/10/3 15:43:30

迭代器模式

​ Iterator Pattern:迭代器模式,是GoF23种设计模式中属于行为型模式的一种。

​ 迭代器的模式已经是很多高级编程语言中常用的设计模式了,体现的位置也是方方面面都可以,比如最常用的for循环就是如此。

​ 在JAVA中,有增强for循环,使用到的就是迭代器模式

for(Demo demo : demos){// TODO
}

​ 在Python中,有着for in 的循环语句也是迭代器模式的体现

for demo in demos:pass

​ 在.NET中,有着IEumerator支持对非泛型集合的简单迭代接口。

结构

迭代器模式
​ 结合类图简单分析一下,迭代器对象分为四个角色,也可以说其实只有两个角色:

  1. 聚合对象:也就是被迭代的对象,这是一个抽象类,用于程序的后序扩展
  2. 迭代器对象:这是迭代器抽象类或者接口,定义如何得到聚合对象的第一个对象,如何得到下一个对象,如何判断是否已经到达结尾等等统一的行为抽象方法。
  3. 具体聚合对象:也就是实现了聚合对象的实体类
  4. 具体的迭代器:实现迭代器,并且对指定的具体聚合对象做定制化的操作。

举例

  1. Java语言中有着iterator就是迭代器模式的体现。
  2. 多个语言中的for循环也有迭代器的体现。

注意

  • 迭代器模式可以按照一个顺序访问聚合对象中的各个元素,而且不需要向用户展示聚合对象的具体实现细节。
  • 迭代器模式可以提供多个不同的方向访问聚合对象中的各个元素,给遍历元素带来多样化的遍历方式。也就是说,一个聚合对象上面可以有多个不同的遍历方式。

一个小DEMO

  1. 场景

    迭代器模式说简单点就是提供一个访问的顺序的方式,而且不需要了解对象的内部细节,每个对象的访问都是统一的操作。

  2. 迭代器接口

    /*** 迭代器模式——迭代器抽象类/接口* @author wq*/
    public interface Iterator {// 得到下一个对象Object next();// 判断是否到达结尾,也就是还有没有下一个boolean hasNext();
    }
    
  3. 聚合对象抽象

    /*** 迭代器模式——聚合对象抽象类/接口* @author wq*/
    public interface Aggregate {// 得到迭代器Iterator getIterator();
    }
    
  4. 常见的内部类实现迭代器的方式,这里以数组为例子,也可以是List,Set,Map都行

    /*** 迭代器模式——具体的聚合对象  具体的迭代器对象* 通过内部类的方式实现,也是常见的实现方式* @author wq*/
    public class MyAggregate implements Aggregate{public String[] demo = {"a","b","c","d","e"};@Overridepublic Iterator getIterator() {return new MyIterator();}private class MyIterator implements Iterator{// 当前访问的对象下标int current = 0;@Overridepublic Object next() {if (this.hasNext()) {return demo[current++];}return null;}@Overridepublic boolean hasNext() {return current < demo.length ? true : false;}}
    }
    
  5. 测试类

    /*** 迭代器模式——测试类* @author wq*/
    public class Main {public static void main(String[] args) {MyAggregate myAggregate = new MyAggregate();for (Iterator iterator = myAggregate.getIterator(); iterator.hasNext();) {System.out.println("-->" + iterator.next());}}
    }
    
  6. 走一波

    -->a
    -->b
    -->c
    -->d
    -->e
    

完成!!!


http://chatgpt.dhexx.cn/article/o7tWoown.shtml

相关文章

迭代器模式:理解与实践

本文收录于JavaStarter &#xff0c;里面有我完整的Java系列文章&#xff0c;学习或面试都可以看看 &#xff08;一&#xff09;什么是迭代器模式 迭代器模式应该是23种设计模式中&#xff0c;程序员最容易理解的设计模式了&#xff0c;因为迭代器模式在日常的开发过程中经常使…

C#设计模式之迭代器模式

迭代器模式 文章目录 迭代器模式模式分类模式产生的原因模式的灵感来源模式类图代码实现迭代器模式总结迭代器模式的优点&#xff1a;迭代器模式的缺点&#xff1a; 本篇博客将介绍迭代器模式&#xff0c;迭代器模式将一个聚合对象保存数据的职责&#xff0c;和它遍历数据的职责…

迭代器模式实例与代码分析

目录 前言 一、&#x1f30d;迭代器&#xff08;Iterator&#xff09;模式是什么&#xff1f;&#x1f30d; 二、&#x1f30d;迭代器&#xff08;Iterator&#xff09;模式的优缺点&#x1f30d; 三、&#x1f30d;迭代器&#xff08;Iterator&#xff09;模式的结构&…

设计模式作业 之迭代器模式

设计一个逐页迭代器,每次可返回指定个数(一页)元素,并将该迭代器用手对数据进行分页处理。绘制对应的类图并编程模拟实现。 &#xff08;1&#xff09;绘制类图 &#xff08;2&#xff09;代码实现 AbstractAggregate类&#xff1a; package lib6.iterator;public interface…

迭代器模式讲解

学习设计模式&#xff0c;让你提升百倍 专栏重点文章设计模式设计模式基础前奏&#xff08;上&#xff09;设计模式设计模式基础前奏&#xff08;下&#xff09;设计模式创建者模式之单例模式设计模式创建者模式之工厂模式设计模式创建者模式之原型模式设计模式创建者模式之建…

设计模式之迭代器模式(十三)

目录 1. 背景 1.1 学院展示问题 1.2 迭代器模式概述 2. 迭代器模式 2.1 迭代器解决院校展示 2.2 迭代器模式在JDK ArrayList中的应用 1. 背景 1.1 学院展示问题 编写程序展示一个学校院系结构&#xff1a;需求是这样&#xff0c;要在一个页面中展示出学校的院系 组成&am…

设计模式——迭代器模式(附代码示例)

一. 传统方式 以学校院系展示为例&#xff0c;实现在一个页面展示学校的院系组成&#xff0c;一个学校有多个学院&#xff0c;一个学院有多个系。传统方式实现类图如下&#xff1a; 传统方式将学院看做是学校的子类&#xff0c;系是学院的子类&#xff0c;这样实际上是站在组织…

C++设计模式(20)——迭代器模式

亦称&#xff1a; Iterator 意图 迭代器模式是一种行为设计模式&#xff0c; 让你能在不暴露集合底层表现形式 &#xff08;列表、 栈和树等&#xff09; 的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 尽管如此&#xff0c; 集合只是一组对…

迭代器模式 - Unity

文章目录 迭代器模式结构实现应用场景优缺点与其他模式的关系 迭代器模式 迭代器模式是对象行为型模式&#xff0c;它提供一个对象来顺序访问聚合对象中的元素&#xff08;遍历元素的算法&#xff09;&#xff0c;且不暴露底层实现。 集合是编程中非常常见的数据结构之一。对…

迭代器模式(C++实现)

迭代器模式 1.定义2.迭代器模式的相关组成抽象聚合类具体聚合类抽象迭代器类具体迭代器类 3.代码实现运行结果演示 4.优缺点 1.定义 提供一种顺序访问集合内元素的方法&#xff0c;但不暴露集合内部实现细节的设计模式&#xff0c;属于行为型设计模式. 迭代器模式将数据的存储…

设计模式之迭代器模式

迭代器模式是一种行为设计模式&#xff0c; 让你能在不暴露集合底层表现形式 &#xff08;列表、 栈和树等&#xff09; 的情况下遍历集合中所有的元素。 集合是编程中最常使用的数据类型之一。 尽管如此&#xff0c; 集合只是一组对象的容器而已。大部分集合使用简单列表存储…

Java设计模式之行为型:迭代器模式

一、什么是迭代器模式&#xff1a; 实际开发中&#xff0c;我们针对不同的需求&#xff0c;可能需要以不同的方式来遍历整个整合对象&#xff0c;但我们不希望在集合容器的抽象接口层中充斥着各种不同的遍历操作&#xff0c;这时候我们就需要一种能完成下面功能的迭代器&#x…

迭代器模式

一、迭代器模式 1、定义 迭代器模式&#xff08;Iterator Pattern&#xff09;又称作游标模式&#xff08;Cursor Pattern&#xff09;,它提供一种按顺序访问集合/聚合/容器对象元素的方法&#xff0c;而又无须暴露集合内部表示。迭代器模式可以为不同的容器提供一致的遍历行为…

设计模式——迭代器模式

迭代器模式 1.迭代器模式动机及定义 1.1模式动机 聚合对象用于存储多个对象&#xff0c;在软件开发中应用广泛&#xff0c;为了更加方便地操作聚合对象&#xff0c;在很多编程语言中都提供了迭代器&#xff08;Iterator&#xff09;,迭代器本身也是一个对象&#xff0c;它的工…

【设计模式】迭代器模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

文章目录 一、迭代器模式简介二、迭代器模式适用场景三、迭代器模式优缺点四、迭代器模式和访问者模式五、迭代器模式代码示例1、迭代器接口2、迭代器实现3、集合元素实例类4、集合管理接口5、集合管理实现类6、测试类 一、迭代器模式简介 迭代器模式 : 提供一种方法 , 顺序访问…

SOME/IP报文格式-Payload

Payload [variable size] In the payload field the parameters are carried. Parameter被携带于Payload字段中 。The size of the SOME/IP payload field depends on the transport protocol used. With UDP the SOME/IP payload shall be between 0 and 1400 Bytes. The lim…

IP协议数据报格式详解

&#x1f431;‍&#x1f3cd;写博客的主要原因是为了巩固所学知识 &#x1f431;‍&#x1f3cd; IP数据报格式 4位版本号(Version) 由4比特组成&#xff0c;用来指定IP协议的版本。IPv4的版本号为4&#xff0c;即0100。 4位首部长度(Header Length) 由4比特组成&#xff0c;表…

IP数据报文格式

【转载】http://blog.csdn.net/shinezhang86/article/details/47145907 由于记性不好的原因, 一直对报文格式的字段记的不是很牢固, 故花了一天时间学习IP报文格式, 第二天来总结. 过两天再继续学习TCP和UDP. IP报文格式如下图所示(图片来源—百度百科): 版本(Version, 4bit):为…

IPv6报文格式

IPv6报文 IPv6报文分为两大部分&#xff1a;报头&#xff0c;负载。 报头 IPv6的报头是固定的320bit&#xff0c;不同与IPv4&#xff0c;IPv6把可选项从标准头部中移除&#xff0c;标准头部包含着版本号、流量类型、流标签、负载数据的长度、下一协议报头、生存时间&#xff08…

IP 协议报文格式 【IPv4】

前言: IP 数据报文由首部&#xff08;称为报头&#xff09;和数据两部分组成&#xff1b;首部的前一部分是固定长度&#xff0c;共 20 字节&#xff0c;是所有 IP 数据报必须具有的&#xff1b;在首部的固定部分的后面是一些可选字段&#xff0c;其长度是可变的 每个 IP 数据报…