設計模式-迭代器模式(Iterator)
阿新 • • 發佈:2018-11-24
概述
定義 : 提供一種方法, 順序訪問一個集合物件中的各個元素, 而又不暴露該物件的內部表示
型別 : 行為型
適用場景
- 訪問一個集合物件的內容而無需暴露它的內部表示
- 為遍歷不同的集合結構提供一個統一的介面
優點
- 分離了集合物件的遍歷行為
缺點
- 類的個數成對增加
模式角色
-
Iterator(迭代器) : 迭代器定義訪問和遍歷元素的介面。
-
ConcreteIterator(具體迭代器) :
- 具體迭代器實現迭代器介面。
- 對該聚合遍歷時跟蹤當前位置。
-
Aggregate(聚合) : 聚合定義建立相應迭代器物件的介面。
-
ConcreteAggregate(具體聚合) : 具體聚合實現建立相應迭代器的介面,該操作返回ConcreteIterator的一個適當的例項。
程式碼說明
這裡就不自己實現迭代器了, JDK中這種場景很多, 就以List和ArrayList為例來說明一下:
- java.util.List介面就對應迭代器模式中的Aggregate角色
- java.util.ArrayList就對應迭代器中ConcreteAggregate角色
- java.util.Iterator介面就對應Iterator角色
- java.util.ArrayList的內部類Itr實現了Iterator介面, 對應ConcreteIterator角色
迭代器的應用範圍很廣泛, 但是JDK, 各種框架一般都會提供對應的迭代器, 很少需要自己動手寫一個迭代器
本文參考:
慕課網<java設計模式精講 Debug 方式+記憶體分析>課程
四人幫<設計模式>