Java設計模式之迭代器模式 五

2021-08-22 02:52:05 字數 1491 閱讀 9977

迭代器模式:提供一種方法順序訪問乙個集合物件中的各個元素,而又不需要暴漏物件的內部表示。

合理組織資料的結構以及相關操作時程式設計的乙個重要方面,比如在程式設計中經常會使用諸如鍊錶、雜湊表等資料結構。鍊錶和雜湊表等資料結構都是可以存放若干個物件的集合,其區別時按著不同的方式來儲存物件。我們希望無論何種集合,應當允許程式以一種統一的方式遍歷集合中的物件,而不需要知道這些物件在集合中時如何表示儲存的。

迭代器模式是遍歷集合的一種成熟模式,迭代器模式的關鍵是將遍歷集合的任務交給乙個稱作迭代器的物件。

包含角色:

1、集合(aggregate):乙個介面,規定了集合需要實現的操作。

2、具體集合(concretearrregate):具體集合是實現集合介面的類的例項,具體集合按著一定的結構儲存物件,具體集合應當有乙個方法,該方法返回乙個針對該集合的具體迭代器。

3、迭代器(iterator): 乙個介面,規定了遍歷具體集合的方法,比如next()方法。

4、具體迭代器(concreteiterator): 實現集合介面的類的例項。具體迭代器在實現迭代器 介面所規定的遍歷集合的方法時,比如next()方法,要保證next()方法的首次呼叫將按著集合 的資料結構找到該集合中的乙個物件,而且每當找到集合中的乙個物件,立刻根據該集合的儲存結構得到待遍歷的後繼物件的引用,並保證依次呼叫next()方法可以遍歷集合。

優點:

1、使用者使用迭代器訪問集合中的物件,而不需要知道這些物件在集合中時如何表示以及儲存的。

2、使用者可以同時使用多個迭代器遍歷乙個集合。

適用情景:

public class student implements comparable

public student(string number, string name, double score)

public int compareto(object b)

public string getnumber()

public string getname()

public double getscore()

}public class useset

public void addstudent(student stu)

public void findstudent(string num)

public void printstudentbyscore() }

private void update() }}

public static void main(string args)

}

執行結果:

設計模式之迭代器模式

概念 提供一種方法順序訪問乙個聚合物件中各個元素,而又不需暴露該物件的內部表示。main 客戶 iproject,產品介面 cproject,產品類 iiterator,迭代器介面 iprojectiterator,產品迭代器介面 cprojectiterator,產品迭代器實現類 說明 cproj...

設計模式之迭代器模式

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

設計模式之迭代器模式

說起迭代器,大家一定不陌生,經常使用的foreach in 這種迴圈就是,c 語言已經內建化了迭代器模式,主要是支援對非泛型集合的簡單迭代介面ieumerator和公開列舉數ienumerable。雖然內建了,但是這種模式也有我們學習的必要性。如下 using system using system...