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

营销网站建设的步骤东莞市网站建设系统企业

营销网站建设的步骤,东莞市网站建设系统企业,深圳建设交易中心官网,湘潭做网站迭代器设计模式 🚩什么是迭代器设计模式?🚩迭代器设计模式的特点🚩迭代器设计模式的结构🚩迭代器设计模式的优缺点🚩迭代器设计模式的Java实现🚩代码总结🚩总结 🚩什么是…

迭代器设计模式

  • 🚩什么是迭代器设计模式?
  • 🚩迭代器设计模式的特点
  • 🚩迭代器设计模式的结构
  • 🚩迭代器设计模式的优缺点
  • 🚩迭代器设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是迭代器设计模式?

迭代器设计模式(Iterator Pattern) 是一种 行为型设计模式,它提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。迭代器模式将遍历数据的职责从聚合对象中分离出来,使得聚合对象可以更专注于数据存储,而迭代器则专注于遍历数据。

使用场景

  • 访问一个聚合对象的内容而无需暴露其内部表示

  • 为聚合对象提供多种遍历方式

  • 为不同的聚合结构提供统一的遍历接口

  • 适用于 集合类树形结构图结构 等数据结构的遍历

🚩迭代器设计模式的特点

  • 分离集合对象的遍历行为:将遍历算法与集合对象分离

  • 多种遍历方式:可以为同一个聚合对象提供多种遍历方式

  • 统一的遍历接口:为不同的聚合结构提供统一的遍历接口

  • 简化聚合接口:聚合对象不需要提供多种遍历方法

  • 并行遍历:支持对同一聚合对象的多个同时遍历

🚩迭代器设计模式的结构

迭代器模式主要包含以下部分:

  • Iterator(迭代器接口):定义访问和遍历元素的接口

  • ConcreteIterator(具体迭代器):实现迭代器接口,跟踪当前访问位置

  • Aggregate(聚合接口):定义创建相应迭代器对象的接口

  • ConcreteAggregate(具体聚合):实现创建相应迭代器的接口

  • Client(客户端):通过迭代器遍历聚合对象

🚩迭代器设计模式的优缺点

✅ 优点

  • 支持多种遍历方式:可以同时使用不同的方式遍历同一个聚合

  • 简化聚合类:将遍历逻辑从聚合类中分离出来

  • 符合单一职责原则:将管理集合和遍历集合的职责分离

  • 符合开闭原则:可以新增迭代器而无需修改聚合类

  • 隐藏内部实现:客户端无需知道聚合的内部结构

❌ 缺点

  • 增加系统复杂度:对于简单的聚合可能过度设计

  • 性能开销:迭代器模式可能会带来一定的性能开销

  • 增加类的数量:每个聚合类都需要对应的迭代器类

🚩迭代器设计模式的Java实现

代码地址:GitHub

  • 创建 Book 类(聚合元素)
/*** @author hanson.huang* @version V1.0* @ClassName Book* @Description 书籍类 - 聚合中的元素* @date 2025/3/25 19:07**/
public class Book {private String name;private double price;public Book(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public double getPrice() {return price;}
}
  • 创建 Iterator 接口
/*** @author hanson.huang* @version V1.0* @InterfaceName Iterator* @Description 迭代器接口* @date 2025/3/25 19:09**/
public interface Iterator {boolean hasNext();Book next();
}
  • 创建 Aggregate 接口
/*** @author hanson.huang* @version V1.0* @InterfaceName Aggregate* @Description 聚合接口* @date 2025/3/25 19:10**/
public interface Aggregate {Iterator createIterator();
}
  • 创建 BookAggregate 具体聚合类
/*** @author hanson.huang* @version V1.0* @ClassName BookAggregate* @Description 具体聚合类 - 书籍集合* @date 2025/3/25 19:10**/
public class BookAggregate implements Aggregate {private List<Book> list = new ArrayList<>();public void add(Book book) {list.add(book);}public Book get(int index) {return list.get(index);}public int getSize() {return list.size();}@Overridepublic Iterator createIterator() {return new BookIterator(this);}
}
  • 创建 BookIterator 具体迭代器
/*** @author hanson.huang* @version V1.0* @ClassName BookIterator* @Description 具体迭代器* @date 2025/3/25 19:12**/
public class BookIterator implements Iterator {private int index;private BookAggregate bookAggregate;public BookIterator(BookAggregate bookAggregate) {this.index = 0;this.bookAggregate = bookAggregate;}@Overridepublic boolean hasNext() {return index < bookAggregate.getSize();}@Overridepublic Book next() {Book book = bookAggregate.get(index);index++;return book;}
}
  • 测试迭代器模式
/*** @author hanson.huang* @version V1.0* @ClassName IteratorPattern* @Description 测试迭代器模式* @date 2025/3/25 19:13**/
public class IteratorPattern {public static void main(String[] args) {BookAggregate bookAggregate = new BookAggregate();String[] books = {"数据结构", "操作系统", "计算机网络", "计算机组成原理"};double[] prices = {10.24, 20.48, 40.96, 81.92};for (int i = 0; i < books.length; i++) {bookAggregate.add(new Book(books[i], prices[i]));}Iterator iterator = bookAggregate.createIterator();while (iterator.hasNext()) {Book book = (Book) iterator.next();System.out.println(book.getName() + " " + book.getPrice());}}
}

📌 运行结果

在这里插入图片描述

🚩代码总结

  • Book 类表示聚合中的元素

  • Iterator 接口定义遍历操作

  • Aggregate 接口定义创建迭代器的方法

  • BookAggregate 是具体聚合类,管理Book对象的集合

  • BookIterator 是具体迭代器,实现遍历逻辑

  • IteratorPattern 客户端使用迭代器遍历聚合对象

🚩总结

  • 迭代器设计模式 提供了一种方法顺序访问聚合对象中的元素

  • 核心是 将遍历行为从聚合对象中分离出来,使两者可以独立变化

  • 适用于 需要遍历集合对象而又不暴露其内部结构 的场景

✅ Java源码中的应用场景:

  • Java集合框架

    • java.util.Iterator 接口

    • 所有集合类都实现了迭代器模式

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述

http://www.dtcms.com/a/517938.html

相关文章:

  • 企业公司网站建设ppt建设一个简单的网站
  • 查询网站的二级域名网页设计如何添加图片
  • 信阳网站设计个人网站网页制作
  • 企业网站优化方案的策划个旧市建设网站
  • 肥西县建设发展局网站福州台江区网站建设
  • 广州哪个区最繁华重庆seo优化公司
  • 官方网站弹幕怎么做需要推销自己做网站的公司
  • 上海未成年人思想道德建设网站网站的运营
  • 东台网站建设logo设计在线生成免费平台只需4步
  • 深圳网站建设伪静态 报价 jsp 语言网站建设龙头企业
  • 网站建设管理 自查 报告小企业网站建设地点
  • 自己做淘宝返利网站网站投资设计
  • 电竞网站建设方案wordpress拼团
  • 赣州企业网站建设推广做网课网站
  • 英文旅游网站建设找个会做网站的 一起做网站
  • 网站公司不给ftp上海网站建设 找思创网络
  • 企业网站建设可行性杭州萧山做网站
  • 树莓派玩win游戏:树莓派5 安装box86 wine vulkan运行Windows游戏,性能非常强劲,仙剑四测试完美通过
  • 网站建设费 科研 类wordpress 后台列表
  • WebGL关键知识点
  • 图片瀑布流网站模板网络空间安全学院
  • 静态网站开发工具有谁帮做网站
  • 单位建设网站的请示上海官方网站建
  • 鄂州网站制作人才招聘企业手机网站建设策划
  • 以用户为中心 建设学校网站苏州学习网站建设
  • 3d视频动画制作优化网站架构
  • 网站建设的淘宝模板西安长安网站建设制作
  • 美食教做网站如何建立免费的网站
  • wordpress设置多站点采集电影做的网站
  • 大模型是什么?从 GPT 到 LLaMA 的核心概念解析