介紹
- 定義:提供一種方法,順序通路一個集合對象中的各個元素,而不暴露該對象的内部表示
- 類型:行為型
- 适用場景:
- 通路一個集合對象的内容而無需暴露它的内部表示
- 為周遊不同的集合結構提供一個統一的接口
- 優點
- 分離集合對象的周遊行為
- 缺點
- 類的個數成對增加
- 相關設計模式
- 疊代器模式和通路者模式
對C++,使用過STL的相關集合類的iterator,很容易了解。也就是一個類相當于一個集合,此集合中有許多的對象。我們想要通路(add,remove,get)集合内的對象。可以通過實作一個對外的疊代器(Iterator)來實作此功能。
一般情況下我們類對外有如下代碼接口:
而對于
IteratorClass
類,一般都會有如下接口
// E代表某種,集合内部元素的類型
E next();
boolean hasNext();
而外部一般可以這樣周遊集合類中的元素
// 假定實作此接口的類為 Box
// 假定我們上下文已經有了一個Box類的執行個體box
IteratorClass it = box.getIterator();
while( it.hasNext() ){
System.out.println( it.next() );
}