天天看點

疊代器模式 疊代器模式

标簽 : Java與設計模式

疊代器模式: 提供一種方法順序通路聚合對象(如<code>List</code>、<code>Set</code>)内的每個元素, 而又不暴露聚合對象的内部實作.

Iterator: 疊代器

定義通路和周遊元素的接口

Aggregate: 聚合

定義建立響應疊代器對象的接口

由于Java已内置了<code>java.lang.Iterable</code>和<code>java.util.Iterator</code>接口, 而<code>Iterable</code>可以作為Aggregate存在(Abstract), 是以在Java中實作疊代器便可不用再定義這兩個接口.

ConcreteAggregate: 具體聚集

實作<code>Iterable</code>接口, 傳回ConcreteIterator的一個适當的執行個體;

ConcreteIterator : 具體疊代器

實作<code>Iterator</code>接口(最好作為具體聚集的内部類), 對該聚集周遊時跟蹤目前位置.

Client

适用

通路一個聚集對象的内容而無需暴露它的内部表示;

支援對聚集對象的多種周遊(如: 不光可以正向周遊, 還可以反向周遊容器元素.);

為周遊不同的聚合結構提供一個統一的接口(即: 支援多态疊代).

<code>Iterator</code>使用場景不必多言, 由于Java已經将其固化到語言中,是以開發中天天都在使用:

當需要通路一個聚集對象, 且不需要了解其内部實作的時, 就應該考慮使用疊代器模式.

當需要對聚集有多種方式周遊時, 可以考慮使用疊代器模式.

<dl></dl>

<dt>參考</dt>

by 攻城師@翡青

Email: [email protected]