售票員其實在做一件重要的事,就是把車廂裡的所有人都遍歷了一遍,不放過乙個不買票的乘客。者也是乙個設計模式的體現。
迭代器模式(iterator),提供一種方法順序訪問乙個聚合物件中各個元素,而又不爆露該物件的內部表示。
當你需要訪問乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,你就應該考慮用迭代器模式。
需要對聚集有多種方式遍歷時,可以考慮用迭代器模式。
為遍歷不同的聚集結構提供如開始、下乙個、是否結束、當前哪一項等統一的介面。
研究歷史是為了更好地迎接未來。
用具體的迭代器concreteiterator來實現抽象的iterator是因為迭代器的另乙個好處,當需要對聚集有多種方式遍歷時,可以考慮用迭代器模式。
從後往前的具體迭代器
客戶端只需要更改乙個地方就可以實現反向遍歷了
三、.net的迭代器實現
ieumerator要比剛才寫的抽象類iterator藥監局,但是可實現的功能卻一點也不少,這其實是對gof的設計改良的結果。
兩個介面還有相應的泛型介面,這兩個介面的**也差別不大。
foreach in的**
foreach in就是實現這兩個介面來實際迴圈遍歷。
迭代器(iterator)模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部**透明地訪問集合內部的資料。
迭代器模式在訪問陣列、集合、列表等資料時,尤其是資料庫操作時,是非常普遍的應用,但由於它太普遍了,所以各種高階語言都對它進行了封裝,所以反而給人感覺此模式本身不太常用了。
大話設計模式筆記(十七) 迭代器模式
提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。聚集抽象類 created by callmedevil on 2019 8 17.public abstract class aggregate 迭代器抽象類 created by callmedevil on 2019 8 ...
設計模式之迭代器模式
概念 提供一種方法順序訪問乙個聚合物件中各個元素,而又不需暴露該物件的內部表示。main 客戶 iproject,產品介面 cproject,產品類 iiterator,迭代器介面 iprojectiterator,產品迭代器介面 cprojectiterator,產品迭代器實現類 說明 cproj...
設計模式之迭代器模式
當你需要訪問乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,而且可能對聚集有多種方式遍歷時,需要為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等 統一介面,你就應該考慮用迭代器模式.提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示.uml設計圖 部分 ite...