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

【C#设计模式(17)——迭代器模式(Iterator Pattern)】

前言

迭代器模式可以使用统一的接口来遍历不同类型的集合对象,而不需要关心其内部的具体实现。

代码

//迭代器接口
public interface Iterator
{bool HashNext();object Next();
}
//集合接口
public interface Collection
{Iterator CreateIterator();
}
//元素迭代器
public class ElementIterator : Iterator
{private string[] elements;private int index = 0;public ElementIterator(string[] elements){this.elements = elements;}public bool HashNext(){return index < elements.Length;}public object Next(){if (index < elements.Length){return elements[index++];}return null;}
}//元素集合
public class ElementCollection : Collection
{private string[] elements;public ElementCollection(string[] elements){this.elements = elements;}public Iterator CreateIterator(){return new ElementIterator(elements);}
}/** 行为型模式:Behavioral Pattern * 迭代器模式:Iterator Pattern*/
internal class Program
{static void Main(string[] args){string[] elements = { "A", "B", "C", "D", "E", "F",};Collection collection = new ElementCollection(elements);Iterator iterator = collection.CreateIterator();while(iterator.HashNext()){Console.WriteLine(iterator.Next().ToString());}Console.ReadLine();}
}

结果

在这里插入图片描述

http://www.lryc.cn/news/497213.html

相关文章:

  • 二、部署docker
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十九,ffmpeg封装
  • ML 系列:第 39 节 - 估计方法:最大似然估计 (MLE)
  • Linux 权限管理:用户分类、权限解读与常见问题剖析
  • 网络原理之 UDP 协议
  • 并发框架disruptor实现生产-消费者模式
  • 【Vivado】xdc约束文件编写
  • Redis使用场景-缓存-缓存雪崩
  • 概率论相关知识随记
  • 【PlantUML系列】序列图(二)
  • WPF+MVVM案例实战与特效(三十四)- 日志管理:使用 log4net 实现高效日志记录
  • 前端测试框架 jasmine 的使用
  • Qwen2-VL视觉大模型微调实战:LaTex公式OCR识别任务(完整代码)
  • 「Mac玩转仓颉内测版42」小学奥数篇5 - 圆和矩形的面积计算
  • Groom Blender to UE5
  • 开发一套ERP 第十弹 图片作为配置文件,本地读取图片,定时更新图片类型
  • 第七十六条:努力保持故障的原子性
  • Word分栏后出现空白页解决方法
  • 基于HTML和CSS的校园网页设计与实现
  • 【算法day7】字符串:反转与替换
  • 分布式存储厂商
  • 合合信息扫描全能王线下体验活动:科技与人文的完美交融
  • 单链表在Go语言中的实现与操作
  • 网关整合sentinel无法读取nacos配置问题分析
  • 简化XPath表达式的方法与实践
  • 【文件下载】接口传递文件成功和失败时,前端的处理方式
  • html+css网页设计马林旅行社移动端4个页面
  • 视频 的 音频通道提取 以及 视频转URL 的在线工具!
  • 容易被遗忘的测试用例
  • uni-app写的微信小程序如何实现账号密码登录后获取token,并且每天的第一次登录后都会直接获取参数而不是耀重新登录(2)