C#中迭代器模式的示例分析
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要为大家展示了"C#中迭代器模式的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#中迭代器模式的示例分析"这篇文章吧。什么是迭代器模式
千家信息网最后更新 2025年01月19日C#中迭代器模式的示例分析
这篇文章主要为大家展示了"C#中迭代器模式的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#中迭代器模式的示例分析"这篇文章吧。
什么是迭代器模式?
迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
何时使用迭代器模式?
当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,需要考虑使用迭代器模式。
迭代器模式的组成
Iterator:迭代器抽象类,用于定义得到开始对象,对到下一个对象,判断是否到结尾,当前对象等抽象方法,统一接口。
ConcreteAggregate:保存聚合对象。
ConcreteIterator:继承于Iterator,实现具体如何对聚合对象的操作。
迭代器模式具体实现
迭代器模式的结构
迭代器模式的实现:
Iterator类:
abstract class Iterator{ public abstract object First(); public abstract object Next(); public abstract bool IsDone(); public abstract object CurrentItem();}
ConcreteIterator类:
//顺序遍历class ConcreteIterator : Iterator{ private ConcreteAggregate aggregate; private int current = 0; //将现在的数据组传输进来 public ConcreteIterator(ConcreteAggregate aggregate) { this.aggregate = aggregate; } public override object CurrentItem() { return aggregate[current]; } public override object First() { return aggregate[0]; } public override bool IsDone() { return current >= aggregate.Count ? true : false; } public override object Next() { object obj = null; current++; if (current < aggregate.Count) { obj = aggregate[current]; } return obj; }}//逆序遍历class ConcreteIteratorDesc : Iterator{ private ConcreteAggregate aggregate; private int current = 0; //传输数据进来 public ConcreteIteratorDesc(ConcreteAggregate aggregate) { this.aggregate = aggregate; current = aggregate.Count - 1; } public override object CurrentItem() { return aggregate[current]; } public override object First() { return aggregate[aggregate.Count - 1]; } public override bool IsDone() { return current < 0 ? true:false; } public override object Next() { object obj = null; current--; if (current >= 0) { obj = aggregate[current]; } return obj; }}
ConcreteAggregate类:
////// 创建迭代器/// 在这里看并没有什么具体的用处/// abstract class Aggregate{ public abstract Iterator CreateIterator();}////// 作用是保存数据,保存的数据是一系列数据,所以用数组/// 然后传输数据给ConcreteIterator/// class ConcreteAggregate : Aggregate{ //用于存放聚合对象 private IList
主函数调用:
static void Main(string[] args){ ConcreteAggregate a = new ConcreteAggregate(); a[0] = "A"; a[1] = "B"; a[2] = "C"; a[3] = "D"; a[4] = "E"; a[5] = "F"; Iterator i = new ConcreteIterator(a); object item = i.First(); while (!i.IsDone()) { Console.WriteLine("{0} buy ticket,please", i.CurrentItem()); i.Next(); } Iterator id = new ConcreteIteratorDesc(a); object itemdec = id.First(); while (!id.IsDone()) { Console.WriteLine("{0} buy ticket,please", id.CurrentItem()); id.Next(); } Console.Read();}
.NET的迭代器实现
迭代器模式在我们现在的使用中其实没有那么麻烦,因为.NET框架已经准备好了相关的接口,只需要实现就好了。
static void Main(string[] args){ ILista = new List (); a.Add("A"); a.Add("B"); a.Add("C"); a.Add("D"); a.Add("E"); a.Add("F"); //看见遍历首先考虑foreach foreach (string item in a) { Console.WriteLine("{0} buy ticket,please", item); } //支持在泛型集合上进行简单迭代。 IEnumerator e = a.GetEnumerator(); while (e.MoveNext()) { Console.WriteLine("{0} buy ticket,please", e.Current); } Console.Read();}
补充:IEnumerator
备注:文中所有代码及知识点均来自于《大话设计模式》,本人属于边学边看边敲代码边总结的阶段。
以上是"C#中迭代器模式的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
迭代
模式
对象
数据
示例
C#
分析
内容
数组
篇文章
传输
代码
接口
方法
知识
顺序
学习
帮助
也就是
作用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如何进行数据库权限管理
软件开发涉及的专业领域
数据库test如何创建
网络安全防护体系的特点
杭州嘉加网络技术有限公司
我的世界1.8多人服务器
我校在吉林省第三届网络安全
网络安全维保资料
美多拉互联网科技
网络安全是软件吗
数据库项目下载
发改局网络安全周活动方案
网络技术逮捕逃亡伊朗的逃犯
乡镇党外人事人才数据库
网络安全对个人影响和措施
ddr4服务器内存有几种
科技 互联网概念
ps软件开发意义
后台服务器有问题怎么办
萤石云服务器域名解析失败
数据库中将毫秒转换成时间
数据库模型主要包括哪三方面
网络安全法梳理
零梦服务器
微信小程序服务器安全吗
网络安全员名单
黑龙江pdu服务器电源哪家强
list变成数据库中in
深圳何为顺网络技术有限公司
北京pdu服务器电源种类有哪些