迭代器模式

2021-09-24 07:53:56 字數 1816 閱讀 5675

實現資料儲存和資料遍歷分離。

提供一種方法來訪問聚合物件,而不用暴露這個物件的內部表示。

定義了訪問和遍歷元素的介面

public inte***ce abstractiterator 

複製**

實現了抽象迭代器介面

public class productiterator implements abstractiterator 

@override

public void next

() }

@override

public boolean islast

() @override

public void previous

() }

@override

public boolean isfirst

() @override

public object getnextitem

() @override

public object getpreviousitem

() }

複製**

用於儲存和管理元素物件,宣告乙個createiterator()方法用於 建立乙個迭代器物件,充當抽象迭代器工廠角色。

public abstract class abstractobjectlist 

public void addobject(object object)

public void removeobject(object object)

public list getobjects

() public abstract abstractiterator createiterator();

}複製**

實現了在抽象聚合類中宣告的createiterator()方法,該 方法返回乙個與該具體聚合類對應的具體迭代器concreteiterator例項。

public class productlist extends abstractobjectlist 

@override

public abstractiterator createiterator

() }

複製**

public class iteratorclient 

system.out.println();

system.out.println("反向遍歷:");

while (!iterator.isfirst())

}}複製**

執行結果:

正向遍歷:

aa,bb,cc,dd,ee,

反向遍歷:

ee,dd,cc,bb,aa,

複製**

(1)支援以不同的方式遍歷乙個聚合物件

(2)簡化了聚合類

(3)增加新的聚合類和迭代器類都很方便,無須修改原 有**,滿足「開閉原則」的要求。

(1)由於迭代器模式將儲存資料和遍歷資料的職責分離,增加新的聚合類需要對應增加新的迭 代器類,類的個數成對增加,這在一定程度上增加了系統的複雜性。

(2) 抽象迭代器的設計難度較大,需要充分考慮到系統將來的擴充套件。

(1)訪問乙個聚合物件的內容而無須暴露它的內部表示。

(2)需要為乙個聚合物件提供多種遍歷方式。

(3)為遍歷不同的聚合結構提供乙個統一的介面,在該介面的實現類中為不同的聚合結構提供 不同的遍歷方式,而客戶端可以一致性地操作該介面。

迭代器模式

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而不是暴露該物件的內部表示。乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,你就應該考慮用迭代器模式。你需要對聚集有多種方式遍歷時,可以考慮用迭代器模式。為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等統一...

迭代器模式

我最早接觸的設計模式就是迭代器模式了哈 為什麼要有迭代器模式呢?看下下面的 就知道了哈 對於乙個陣列物件sz 我們要怎麼遍歷呢?public void bianlisz class geweishu public myiterator getiterator private class geweis...

迭代器模式

迭代器模式 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件多的內部表示。1 iterator抽象類 public abstract class iterator 2 aggregate聚集抽象類 public abstract class aggregate 3 concreteite...