1. 程式人生 > >設計模式-迭代器模式(Iterator)

設計模式-迭代器模式(Iterator)

概述

定義 : 提供一種方法, 順序訪問一個集合物件中的各個元素, 而又不暴露該物件的內部表示

型別 : 行為型

適用場景

  • 訪問一個集合物件的內容而無需暴露它的內部表示
  • 為遍歷不同的集合結構提供一個統一的介面

優點

  • 分離了集合物件的遍歷行為

缺點

  • 類的個數成對增加

模式角色

  • 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 方式+記憶體分析>課程
四人幫<設計模式>