天天看點

設計模式(14)—— 行為型 ——疊代器(Iterator)

介紹

  • 定義:提供一種方法,順序通路一個集合對象中的各個元素,而不暴露該對象的内部表示
  • 類型:行為型
  • 适用場景:
    • 通路一個集合對象的内容而無需暴露它的内部表示
    • 為周遊不同的集合結構提供一個統一的接口
  • 優點
    • 分離集合對象的周遊行為
  • 缺點
    • 類的個數成對增加
  • 相關設計模式
    • 疊代器模式和通路者模式

對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() );
}