看完售票员这个迭代高手,突然想起了自己高中之前当课代表的无聊日子了!每天面对教室中那些黑压压的人群,就有点透不过气来!更何况天天还得催着他们交作业!更是透顶的无聊啊!最可恨的还是每次总是有那么几个人忘记或者就是故意不交作业,让自己着实费一番苦工把他们搜索出来!
public interface IEumerator { object Current //获取集合中的当前元素 { get; } //将枚举数推进到集合的下一个元素。方法返回值True表示迭代器成功 //前进到集合中的下一个元素,返回值false表示已经位于集合中的末尾 bool MoveNext(); void Reset(); //恢复初始化指向的位置,该位置位于集合中第一个元素之前 }IEnumerable公开枚举数,该枚举数支持在非泛型集合上进行简单迭代
public interface IEumerable { IEumerator GetEnumerator(); //返回一个循环访问集合的枚举数 }对于客户端代码的优化:
static void main (string [] args) { IList<string> a = new List<string>(); //也可以是ArrayList集合 a.Add("霍霍"); a.Add("盟盟"); a.Add("行李"); a.Add("老外"); a.Add("公交内部员工"); a.Add("小偷"); foreach (string item in a ) //使用Foreach语句,优化了代码 { Console.WriteLine("{0}请买票!", item); } Console.Read(); }foreach in就是实现这两个接口来实现循环遍历。尽管我们不需要显示的引用迭代器,但系统本身还是通过迭代器来实现遍历的。总地来说,迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。
优点:它支持以不同的方式遍历一个聚集对象;迭代器简化了聚合类;在同一个聚合上可以有多个遍历;在迭代器模式中,增加新的聚合类和迭代器类都很方便,无需修改原有代码。
回忆那段课代表的日子-迭代器模式,布布扣,bubuko.com
原文:http://blog.csdn.net/huo065000/article/details/24352437