20 迭代器模式

20 迭代器模式
概念:提供一種方法順序訪問一個聚合對象中的各個元素,而又不暴露該對象的內部表示

適用場景
    一個聚集對象不管是什麼都需要遍歷的時候
    或者對聚集有多種方式遍歷

作用
    迭代器模式就是分離了集合對象的遍歷行爲,抽象出一個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部代碼透明的訪問集合內部的數據。



迭代器模式的結構
抽象容器:一般是一個接口,提供一個iterator()方法,例如java中的Collection接口,List接口,Set接口等。
具體容器:就是抽象容器的具體實現類,比如List接口的有序列表實現ArrayList,List接口的鏈表實現LinkList,Set接口的哈希列表的實現HashSet等。
抽象迭代器:定義遍歷元素所需要的方法,一般來說會有這麼三個方法:取得第一個元素的方法first(),取得下一個元素的方法next(),判斷是否遍歷結束的方法isDone()(或者叫hasNext()),移出當前對象的方法remove(),
迭代器實現:實現迭代器接口中定義的方法,完成集合的迭代。

迭代器模式的優缺點

        迭代器模式的優點有:

  • 簡化了遍歷方式,對於對象集合的遍歷,還是比較麻煩的,對於數組或者有序列表,我們尚可以通過遊標來取得,但用戶需要在對集合瞭解很清楚的前提下,自行遍歷對象,但是對於hash表來說,用戶遍歷起來就比較麻煩了。而引入了迭代器方法後,用戶用起來就簡單的多了。
  • 可以提供多種遍歷方式,比如說對有序列表,我們可以根據需要提供正序遍歷,倒序遍歷兩種迭代器,用戶用起來只需要得到我們實現好的迭代器,就可以方便的對集合進行遍歷了。
  • 封裝性良好,用戶只需要得到迭代器就可以遍歷,而對於遍歷算法則不用去關心。

        迭代器模式的缺點:

  • 對於比較簡單的遍歷(像數組或者有序列表),使用迭代器方式遍歷較爲繁瑣,大家可能都有感覺,像ArrayList,我們寧可願意使用for循環和get方法來遍歷集合。

























發佈了31 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章