迭代器(Iterator)模式
生活随笔
收集整理的這篇文章主要介紹了
迭代器(Iterator)模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*
*迭代器(Iterator)模式:提供貨一種方法順序反問一個聚合對象中的各個元素。
*/
?
?
ConcreteAggregate a = new ConcreteAggregate();a[0] = "A";a[1] = "B";a[2] = "C";a[3] = "D";Iterator i = new ConcreteIterator(a);object item = i.First();while (!i.IsDone()){Console.WriteLine("{0} 請買車票! ", i.CurrentItem());i.Next();}Console.ReadLine();/// <summary>/// 迭代器(Iterator) 抽象類/// </summary>abstract class Iterator{public abstract object First();public abstract object Next();public abstract bool IsDone();public abstract object CurrentItem();} /// <summary>/// Aggregate 集聚抽象類/// </summary>abstract class Aggregate{public abstract Iterator CreateIterator();}/// <summary>/// ConcreteIterator 具體迭代器/// </summary>class ConcreteIterator : Iterator{//創建一個具體集聚類對象private ConcreteAggregate aggregate;private int current = 0;//初始化具體集聚類傳入對象public ConcreteIterator(ConcreteAggregate aggregate){this.aggregate = aggregate;}public override object First(){return aggregate[0];} public override object Next(){object ret = null;current++;if (current < aggregate.Count)ret = aggregate[current];return ret;}public override bool IsDone(){return current >= aggregate.Count ? true : false;} public override object CurrentItem(){return aggregate[current];}}/// <summary>/// 具體 集聚類/// </summary>class ConcreteAggregate : Aggregate{private IList<object> items = new List<object>();public override Iterator CreateIterator(){return new ConcreteIterator(this);}public int Count{ get { return items.Count; } }//索引public object this[int index]{get { return items[index]; }set { items.Insert(index, value); }} }?在.net中IEumerator 已經為你準備好了接口,你只要去實現它就好。
?其實就一個 ?foreach 循環的底層方法。 封裝后就是foreach ?遍歷集合
?
public interface IEumerator{object Current{ get; }bool MoveNext();void Reset(); }public interface IEnumerable{IEumerator GetEnumerator();}?
轉載于:https://www.cnblogs.com/dragon-L/p/3791151.html
總結
以上是生活随笔為你收集整理的迭代器(Iterator)模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构 【实验7 二叉树基本操作】
- 下一篇: topcoder SRM 625 DIV