設計模式之迭代器模式

2021-10-11 11:02:04 字數 1636 閱讀 9401

迭代器模式是使用非常普遍的設計模式,本文介紹一下什麼是迭代器模式,以及如何實現迭代器模式。

提供乙個物件來順序訪問聚合物件中的一系列資料,而不暴露聚合物件的內部表示,迭代器模式是一種物件行為型模式。

當需要為聚合物件提供多種遍歷方式時。

當需要為遍歷不同的聚合結構提供乙個統一的介面時。

當訪問乙個聚合物件的內容而無須暴露其內部細節的表示時。

1:優點:

訪問乙個聚合物件的內容而無須暴露它的內部表示。

遍歷任務交由迭代器完成,這簡化了聚合類。

它支援以不同方式遍歷乙個聚合。

增加新的聚合類和迭代器類都很方便,無須修改原有**。

封裝性良好,為遍歷不同的聚合結構提供乙個統一的介面。

2:缺點:

增加了類的個數,這在一定程度上增加了系統的複雜性。

1:迭代器模式是通過將聚合物件的遍歷行為分離出來,抽象成迭代器類來實現的,其目的是在不暴露聚合物件的內部結構的情況下,讓外部**透明地訪問聚合的內部資料。

2:迭代器模式的主要角色如下:

抽象聚合(aggregate)角色:定義儲存、新增、刪除聚合物件以及建立迭代器物件的介面。

具體聚合(concreteaggregate)角色:實現抽象聚合類,返回乙個具體迭代器的例項。

抽象迭代器(iterator)角色:定義訪問和遍歷聚合元素的介面,通常包含 hasnext()、first()、next()等方法。

具體迭代器(concretelterator)角色:實現抽象迭代器介面中所定義的方法,完成對聚合物件的遍歷,記錄遍歷的當前位置。

3:迭代器模式的結構圖如圖所示:

1:抽象聚合(aggregate):

2:具體聚合(concreteaggregate):

3:抽象迭代器(iterator):

4:具體迭代器(concreteiterator):

5.1:第一步:建立具體集合類

5.2:第二步:返回具體迭代器

5.3:第三步:通過迭代器迴圈輸出聚合物件內容

6:執行結果:

1:迭代器模式滿足開閉原則和單一職責。

2:由於聚合與迭代器的關係非常密切,所以大多數語言在實現聚合類時都提供了迭代器類,因此大數情況下使用語言中已有的聚合類的迭代器就已經夠了。

設計模式之迭代器模式

概念 提供一種方法順序訪問乙個聚合物件中各個元素,而又不需暴露該物件的內部表示。main 客戶 iproject,產品介面 cproject,產品類 iiterator,迭代器介面 iprojectiterator,產品迭代器介面 cprojectiterator,產品迭代器實現類 說明 cproj...

設計模式之迭代器模式

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

設計模式之迭代器模式

說起迭代器,大家一定不陌生,經常使用的foreach in 這種迴圈就是,c 語言已經內建化了迭代器模式,主要是支援對非泛型集合的簡單迭代介面ieumerator和公開列舉數ienumerable。雖然內建了,但是這種模式也有我們學習的必要性。如下 using system using system...