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

23种设计模式-行为型模式之迭代器模式(Java版本)

Java 迭代器模式(Iterator Pattern)详解

🧠 什么是迭代器模式?

迭代器模式是一种行为型设计模式,它提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。


🎯 使用场景

  • 遍历集合对象(如 List、Set、Map)
  • 需要统一不同容器的遍历方式
  • 不希望暴露集合内部结构

🏗️ 模式结构

  • Iterator(迭代器接口):定义访问和遍历元素的接口
  • ConcreteIterator(具体迭代器):实现迭代器接口,记录遍历状态
  • Aggregate(聚合接口):创建迭代器对象
  • ConcreteAggregate(具体聚合类):实现聚合接口,返回具体迭代器

✅ 示例:自定义聚合对象

迭代器接口

public interface Iterator<E> {boolean hasNext();E next();
}

聚合接口

public interface Aggregate<E> {Iterator<E> createIterator();
}

具体聚合类

import java.util.ArrayList;
import java.util.List;public class NameRepository implements Aggregate<String> {private List<String> names = new ArrayList<>();public NameRepository() {names.add("Tom");names.add("Jerry");names.add("Alice");}@Overridepublic Iterator<String> createIterator() {return new NameIterator();}private class NameIterator implements Iterator<String> {private int index = 0;@Overridepublic boolean hasNext() {return index < names.size();}@Overridepublic String next() {return hasNext() ? names.get(index++) : null;}}
}

客户端使用

public class Main {public static void main(String[] args) {NameRepository repo = new NameRepository();Iterator<String> iterator = repo.createIterator();while (iterator.hasNext()) {System.out.println("Name: " + iterator.next());}}
}

✅ 优点

  • 封装集合遍历细节
  • 支持多种遍历方式
  • 遵循单一职责原则(遍历与集合解耦)

⚠️ 缺点

  • 每种集合都需要实现迭代器,增加代码量
  • 不支持逆向遍历(需扩展接口)

🧩 使用建议

Java 中已有内置迭代器(如 Iterator<T> 接口),但理解其设计思想有助于掌握设计模式的解耦思想与开放封闭原则。

http://www.xdnf.cn/news/2128.html

相关文章:

  • 测试基础笔记第十三天
  • 工业摄像头通过USB接口实现图像
  • STL中emplace实现原理是什么?
  • 240426 leetcode exercises
  • springboot入门-controller层
  • IT社团分析预测项目(pandas、numpy、sklearn)
  • PMP-第一章 引论
  • 基于Docker、Kubernetes和Jenkins的百节点部署架构图及信息流描述
  • 微信小程序,基于uni-app的轮播图制作,调用文件中图片
  • 【计算机网络】TCP的四种拥塞控制算法
  • 深圳举办2025年全国儿童预防接种日主题宣传活动 全生命周期健康守护再升级
  • Win下Pycharm运行/调试配置脚本形参执行替换Linux下终端执行,进行调试需要注意的
  • MyBatis XML 配置完整示例(含所有核心配置项)
  • Unity中数据储存
  • 【Linux】Centos7 安装 Docker 详细教程
  • 7.学习笔记-Maven进阶(P75-P89)-进度(p75-P80)
  • Prometheus、Zabbix 和 Nagios 这三个工具的对100个节点的部署设计的信息流
  • Python Cookbook-6.11 缓存环的实现
  • 深入理解TransmittableThreadLocal:原理、使用与避坑指南
  • java智慧城管综合管理系统源码,前端框架:vue+element;后端框架:springboot;移动端:uniapp开发,技术前沿,可扩展性强
  • 代码随想录算法训练营Day31 | 56. 合并区间 738.单调递增的数字
  • 栈相关算法题解题思路与代码实现分享
  • 【Pandas】pandas DataFrame rmul
  • 2024江西ICPC部分题解
  • 数据分析管理软件 Minitab 22.2.2 中文版安装包 免费下载
  • 【Hive入门】Hive分桶表深度解析:从哈希分桶到Join优化的完整指南
  • 数字技术驱动下教育生态重构:从信息化整合到数字化转型的路径探究
  • 【摩尔定律】
  • Python爬虫实战:获取高考资源网各学科精品复习资料
  • C#中的弱引用使用