C#中迭代器模式的示例分析-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“C#中迭代器模式的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C#中迭代器模式的示例分析”這篇文章吧。

專注于為中小企業(yè)提供成都網站制作、成都網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)海西免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現(xiàn)規(guī)模擴充和轉變。

什么是迭代器模式?

迭代器模式(Iterator):提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露該對象的內部表示。

何時使用迭代器模式?

當需要訪問一個聚合對象,而且不管這些對象是什么都需要遍歷的時候,需要考慮使用迭代器模式。

迭代器模式的組成

Iterator:迭代器抽象類,用于定義得到開始對象,對到下一個對象,判斷是否到結尾,當前對象等抽象方法,統(tǒng)一接口。

ConcreteAggregate:保存聚合對象。

ConcreteIterator:繼承于Iterator,實現(xiàn)具體如何對聚合對象的操作。

迭代器模式具體實現(xiàn)

迭代器模式的結構

  C#中迭代器模式的示例分析

迭代器模式的實現(xiàn):

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;
 //將現(xiàn)在的數(shù)據(jù)組傳輸進來
 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;
 //傳輸數(shù)據(jù)進來
 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類:

/// <summary>
/// 創(chuàng)建迭代器
/// 在這里看并沒有什么具體的用處
/// </summary>
abstract class Aggregate
{
 public abstract Iterator CreateIterator();
}
/// <summary>
/// 作用是保存數(shù)據(jù),保存的數(shù)據(jù)是一系列數(shù)據(jù),所以用數(shù)組
/// 然后傳輸數(shù)據(jù)給ConcreteIterator
/// </summary>
class ConcreteAggregate : Aggregate
{
 //用于存放聚合對象
 private IList<object> items = new List<object>();
 public override Iterator CreateIterator()
 {
 return new ConcreteIterator(this);
 }
 //數(shù)組的長度,也就是ConcreteAggregate的屬性
 public int Count { get { return items.Count; } }
 /// ConcreteAggregate現(xiàn)在是數(shù)組形式
 /// get獲取當前的數(shù)據(jù)
 /// set將新來的數(shù)據(jù)插入到ConcreteAggregate中
 public object this[int index]
 {
 get { return items[index]; }
 set { items.Insert(index, value); }
 }
}

主函數(shù)調用:

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的迭代器實現(xiàn)

迭代器模式在我們現(xiàn)在的使用中其實沒有那么麻煩,因為.NET框架已經準備好了相關的接口,只需要實現(xiàn)就好了。

static void Main(string[] args)
{
 IList<string> a = new List<string>();
 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<string> e = a.GetEnumerator();
 while (e.MoveNext())
 {
 Console.WriteLine("{0} buy ticket,please", e.Current);
 }
 Console.Read();
}

補充:IEnumerator

C#中迭代器模式的示例分析

備注:文中所有代碼及知識點均來自于《大話設計模式》,本人屬于邊學邊看邊敲代碼邊總結的階段。

以上是“C#中迭代器模式的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)成都網站制作公司行業(yè)資訊頻道!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網站標題:C#中迭代器模式的示例分析-創(chuàng)新互聯(lián)
瀏覽地址:http://bm7419.com/article20/dgocco.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供外貿網站建設、域名注冊小程序開發(fā)、軟件開發(fā)手機網站建設、ChatGPT

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站托管運營