1. 程式人生 > >設計模式(10) 迭代器模式--行為型

設計模式(10) 迭代器模式--行為型

定義

迭代器模式(Iterator Pattern):提供一種方法來訪問聚合物件,而不用暴露這個物件的內部表示。

角色

抽象迭代器(Iterator)

抽象迭代器定義了訪問和遍歷元素的介面,一般宣告如下方法:用於獲取第一個元素的first(),用於訪問下一個元素的next(),用於判斷是否還有下一個元素的hasNext(),用於獲取當前元素的currentItem(),在其子類中將實現這些方法。

具體迭代器(ConcreteIterator)

具體迭代器實現了抽象迭代器介面,完成對集合物件的遍歷,同時在對聚合進行遍歷時跟蹤其當前位置。

抽象聚合類(Aggregate )

抽象聚合類用於儲存物件,並定義建立相應迭代器物件的介面,宣告一個createIterator()方法用於建立一個迭代器物件

具體聚合類(ConcreteAggregate )

具體聚合類實現了建立相應迭代器的介面,實現了在聚合類中宣告的createIterator()方法,並返回一個與該具體聚合相對應的具體迭代器ConcreteIterator例項

類圖

示例

電視機遙控器就是一個迭代器的例項,通過它可以實現對電視機頻道集合的遍歷操作

要點

1、它支援以不同的方式遍歷一個聚合物件,在同一個聚合物件上可以定義多種遍歷方式。在迭代器模式中只需要用一個不同的迭代器來替換原有迭代器即可改變遍歷演算法,我們也可以自己定義迭代器的子類以支援新的遍歷方式。

2、迭代器簡化了聚合類。由於引入了迭代器,在原有的聚合物件中不需要再自行提供資料遍歷等方法,這樣可以簡化聚合類的設計。

3、 在迭代器模式中,由於引入了抽象層,增加新的聚合類和迭代器類都很方便,無須修改原有程式碼,滿足“開閉原則”的要求。

4.Java的集合即使用了迭代器模式