1. 程式人生 > >叠代器模式

叠代器模式

這就是 iter first 滿足 擁有 popu collect 定義 進行

1、模式定義

叠代器模式(Iterator Pattern) :提供一種方法來訪問聚合對象,而不用暴露這個對象的內部表示,其別名為遊標(Cursor)。叠代器模式是一種對象行為型模式。

2、模式結構
叠代器模式包括例如以下角色:
Iterator: 抽象叠代器
ConcreteIterator: 詳細叠代器
Aggregate: 抽象聚合類
ConcreteAggregate: 詳細聚合類

3、模式分析
聚合是一個管理和組織數據對象的數據結構。
聚合對象主要擁有兩個職責:一是存儲內部數據。二是遍歷內部數據。
存儲數據是聚合對象最主要的職責。
將遍歷聚合對象中數據的行為提取出來。封裝到一個叠代器中。通過專門的叠代器來遍歷聚合對象的內部數據,這就是叠代器模式的本質。

叠代器模式是“單一職責原則”的完美體現。

模式分析
自己定義叠代器
MyIterator——抽象叠代器
MyCollection——抽象聚合類
NewCollection——詳細聚合類
NewIterator——詳細叠代器
Client

public class ConcreteIterator implements Iterator
{
	private ConcreteAggregate objects;
	
	public ConcreteIterator(ConcreteAggregate objects)
	{
		this.objects=objects;
	}
	public void first()
	{  ......  }
		
	public void next()
	{  ......  }
	public boolean hasNext()
	{  ......  }
	
	public Object currentItem()
	{  ......  }
}
public class ConcreteAggregate implements Aggregate
{	
    ......	
	public Iterator createIterator()
	{
		return new ConcreteIterator(this);
	}
	......
}

在叠代器模式中應用了工廠方法模式。聚合類充當工廠類。而叠代器充當產品類,因為定義了抽象層。系統的擴展性非常好,在client能夠針對抽象聚合類和抽象叠代器進行編程。
因為非常多編程語言的類庫都已經實現了叠代器模式,因此在實際使用中我們非常少自己定義叠代器。僅僅須要直接使用Java、C#等語言中已定義好的叠代器就可以,叠代器已經成為我們操作聚合對象的基本工具之中的一個。

4、模式優缺點
叠代器模式的長處
它支持以不同的方式遍歷一個聚合對象。


叠代器簡化了聚合類。


在同一個聚合上能夠有多個遍歷。
在叠代器模式中,添加新的聚合類和叠代器類都非常方便,無須改動原有代碼,滿足“開閉原則”的要求。

叠代器模式的缺點
因為叠代器模式將存儲數據和遍歷數據的職責分離,添加新的聚合類須要相應添加新的叠代器類,類的個數成對添加,這在一定程度上添加了系統的復雜性。


5、模式適用環境
在下面情況下能夠使用叠代器模式:
訪問一個聚合對象的內容而無須暴露它的內部表示。
須要為聚合對象提供多種遍歷方式。
為遍歷不同的聚合結構提供一個統一的接口。

叠代器模式