C#中迭代器模式的示例分析
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章主要为大家展示了"C#中迭代器模式的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#中迭代器模式的示例分析"这篇文章吧。什么是迭代器模式
千家信息网最后更新 2024年12月12日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安全错误
数据库的锁怎样保障安全
数据库gi和db升级
大学网络安全教育感想
网络安全来自哪
不正当竞争网络安全保障义务
华鑫德州互联网科技
数据库范式bcnf
四川直销会员软件开发
崇明区现代网络安全质量服务
验证服务器怎么解除
金赤鸟互联网科技股份有限公司
数据库安全的威胁有哪些方面
后备ups服务器
同时添加多个虚拟服务器
设备管理服务器地址怎么写
自测软件开发
如何切换当前数据库
指纹数据库 csdn
学软件开发必须英语要好吗
日制大专计算机网络技术学什么
网络安全法宣传视频腾讯
软件开发业务闭环
易语言多线程数据库
微软服务器系统部署
最专业的大数据和数据库技术解读
精益软件开发pdf百度云
怎么用数据库造十万条数据
通讯网络技术遇到的挑战
传奇服务器假设
航天金穗开票服务器
武汉无为网络技术有限公司