码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-迭代器模式

时间:2018-05-20 19:26:41      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:设计模式   迭代器模式   

interface Iterator { object First(); object Next(); bool isDone(); object CurrentItem(); } class myIterator : Iterator { private MyAggragate items; private int cuttent = 0; public myIterator(MyAggragate _items) { items = _items; } public object CurrentItem() { return items[cuttent]; } public object First() { return items[0]; } public bool isDone() { return cuttent>=items.Count?true:false; } public object Next() { cuttent++; if (cuttent >= items.Count) return null; return items[cuttent]; } } abstract class Aggragate { public abstract Iterator CreateIterator(); } class MyAggragate : Aggragate { private IList<string> list = new List<string>(); public int Count { get { return list.Count; } } public string this[int index] { get { return list[index]; } set { list.Insert(index, value); } } public override Iterator CreateIterator() { return new myIterator(this); } } //前端 static void Main(string[] args) { MyAggragate a = new MyAggragate(); a[0] = "张三"; a[1] = "李四"; a[2] = "王五"; a[3] = "王五2"; diedaiqi.Iterator i = new myIterator(a); var item = i.First(); Console.WriteLine("{0}1", item); while (!i.isDone()) { Console.WriteLine("{0}",i.CurrentItem()); i.Next(); } Console.ReadLine(); }

总结:访问聚集对象,不管该对象是什么,需要遍历的时候,就使用迭代器。
迭代器模式:为聚集提供开始、下一个、是否结束、当前处于哪一项的统一的接口。
C#的集合什么的已经在内部实现了迭代器。
foreach(string item in a)
{
console.write("当前{0}",item);
}的内部实现其实是:
IEnumerator<string> e=a.GetEnumerator();
while(e.Next())
{
console.write("当前{0}",e.Current);
}

设计模式-迭代器模式

标签:设计模式   迭代器模式   

原文地址:http://blog.51cto.com/5591787/2118484

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!