迭代器模式

2021-06-28 19:30:48 字數 2034 閱讀 7915

看完售票員這個迭代高手,突然想起了自己高中之前當課代表的無聊日子了!每天面對教室中那些黑壓壓的人群,就有點透不過氣來!更何況天天還得催著他們交作業!更是透頂的無聊啊!最可恨的還是每次總是有那麼幾個人忘記或者就是故意不交作業,讓自己著實費一番苦工把他們搜尋出來!

迭代式模式,提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。就如自己這個課代表職位,不管是學習好的,還是和自己關係好的,到這個時候都得交作業,因為得上交老師人名單來查詢作業情況。查作業的過程當然就是乙個很好的迭代模式了!原來自己也曾經是乙個迭代高手啊@!

迭代器模式,又叫做游標模式,屬於行為模式的一種

當你需要訪問乙個聚集物件,而不管這些物件是什麼都需要遍歷的時候,你就應該考慮使用該模式;對於不想交作業的同學,我可以通過瀏覽一遍作業從左到右檢視,也可以從右到做檢視,也就是當需要對聚集有多種方式遍歷時,可以考慮;不管是什麼作業,都要遵循這個方式,為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等統一介面。

1)foreach in語句:為陣列或物件集合中的每個元素重複乙個嵌入語句組。其實就是vb中的for each in語句,只是寫法不一樣罷了!

foreach in 語句為陣列或物件集合中的每個元素重複乙個嵌入語句組。

2).net的迭代器,已經準備好的介面ieumerator

ieumerator支援對非泛型集合的簡單迭代介面

[csharp]view plain

copy

print

?public

inte***ce ieumerator 

//將列舉數推進到集合的下乙個元素。方法返回值true表示迭代器成功

//前進到集合中的下乙個元素,返回值false表示已經位於集合中的末尾

bool movenext();    

void reset();   //恢復初始化指向的位置,該位置位於集合中第乙個元素之前

public inte***ce ieumerator

//將列舉數推進到集合的下乙個元素。方法返回值true表示迭代器成功

//前進到集合中的下乙個元素,返回值false表示已經位於集合中的末尾

bool movenext();

void reset(); //恢復初始化指向的位置,該位置位於集合中第乙個元素之前

}

ienumerable公開列舉數,該列舉數支援在非泛型集合上進行簡單迭代

[csharp]view plain

copy

print

?public

inte***ce ieumerable   

public inte***ce ieumerable

對於客戶端**的優化:

[csharp]view plain

copy

print

?static

void main (string args) 

請買票!", item); 

}  console.read(); 

static void main (string  args)

請買票!", item);

}console.read();

}

foreach in就是實現這兩個介面來實現迴圈遍歷。儘管我們不需要顯示的引用迭代器,但系統本身還是通過迭代器來實現遍歷的。總地來說,迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部**透明地訪問集合內部的資料。

優點:它支援以不同的方式遍歷乙個聚集物件;迭代器簡化了聚合類;在同乙個聚合上可以有多個遍歷;在迭代器模式中,增加新的聚合類和迭代器類都很方便,無需修改原有**。

缺點:由於迭代器模式將儲存資料和遍歷資料的職責分離,增加新的聚合類需要對應增加新的迭代器類,類的個數成對增加,這在一定程度上增加了系統的複雜性。

迭代器模式

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而不是暴露該物件的內部表示。乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,你就應該考慮用迭代器模式。你需要對聚集有多種方式遍歷時,可以考慮用迭代器模式。為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等統一...

迭代器模式

我最早接觸的設計模式就是迭代器模式了哈 為什麼要有迭代器模式呢?看下下面的 就知道了哈 對於乙個陣列物件sz 我們要怎麼遍歷呢?public void bianlisz class geweishu public myiterator getiterator private class geweis...

迭代器模式

迭代器模式 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件多的內部表示。1 iterator抽象類 public abstract class iterator 2 aggregate聚集抽象類 public abstract class aggregate 3 concreteite...