设计模式-迭代器模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-迭代器模式相关的知识,希望对你有一定的参考价值。

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);
}

以上是关于设计模式-迭代器模式的主要内容,如果未能解决你的问题,请参考以下文章

迭代器模式(Iterator Pattern)

设计模式-迭代器模式

Java设计模式之迭代器模式

设计模式11-迭代器模式与命令模式详解

设计模式之三:迭代器模式(IteratorPattern)

设计模式--迭代器模式C++实现