迭代器模式總結

2021-09-29 17:19:51 字數 1285 閱讀 3692

1、問題:

在物件導向的軟體設計中,經常會遇到一些聚集物件,按一定的順序的遍歷訪問問題,這個遍歷演算法究竟應該由誰來實現呢,聚集物件本身?這樣聚集物件承受了過多的功能,不僅要維護聚集物件內的元素,還要提供遍歷自身的介面,而且由於遍歷狀態儲存的問題,不能對同乙個容器物件同時進行多個遍歷,這不符合單一職責原則。如果將遍歷演算法交給客戶端,會將容器的內部細節暴露無遺,而且客戶端與聚集物件高度耦合。分離了集合物件的遍歷行為,將遍歷演算法交給這個迭代器角色來完成,可以很好的避免容器內部細節的暴露,而且也使得設計符合「單一職責原則」,另外迭代器模式抽象了具體迭代器角色,可以通過對乙個抽象迭代器多個整合可來完成同一聚集物件的多種遍歷。

2、定義:

迭代器(iterator)模式,又叫做游標(cursor)模式。

提供一種方法順序訪問乙個聚合物件(或容器物件:container)中各個元素, 而又不需暴露該物件的內部表示。

3、意圖:

分離了集合物件的遍歷行為,將遍歷演算法交給這個迭代器角色來完成,可以很好的避免容器內部細節的暴露,而且也使得設計符合「單一職責原則」,另外迭代器模式抽象了具體迭代器角色,可以通過對乙個抽象迭代器多個整合可來完成同一聚集物件的多種遍歷。

4、角色:

a、迭代器角色(iterator):定義訪問和遍歷元素的介面。

b、具體迭代器角色(concrete iterator):關聯到被迭代的具體聚集物件角色,繼承迭代器角色實現具體的迭代,並負責管理記錄遍歷中的當前位置。

c、聚集物件抽象角色(aggregate):責提供建立具體迭代器角色的介面。

d、具體聚集物件角色(concrete aggreate):持有乙個物件的集合,實現建立具體迭代器角色的介面,返回集合遍歷所依賴的乙個迭代器。

5、結構圖

6、優點:

a、支援以不同的方式遍歷乙個集合物件。根據實現方式的不同,效果上會有差別。

b、簡化了集合物件的介面。聚集物件不負責提供遍歷演算法。

c、對同乙個容器物件,可以同時進行多個遍歷。因為遍歷狀態是儲存在每乙個迭代器物件中的。

7、缺點:

a、增加新的聚合類需要對應增加新的迭代器類,類的個數成對增加,這在一定程度上增加了系統的複雜性。。

b、集合類與迭代器類非常緊密地關聯在一起。

8、應用場景:

a、訪問乙個容器物件的內容而無需暴露它的內部表示。

b、支援對容器物件的多種遍歷。

c、為遍歷不同的容器結構提供乙個統一的介面。

迭代器python Python 迭代器總結

迭代器是python乙個強大的功能,它可以記錄被迭代 物件 的位置,迭代器物件從集合的第乙個元素開始訪問資料,直到所有資料訪問結束,迭代器有兩個基本函式iter 和next iter 用來生成迭代器 next 用來返回迭代器的下乙個資料 python內建模組itertools,提供了很多非常有用的函...

迭代器模式

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

迭代器模式

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