java設計模式-迭代器模式(Interator)

迭代器模式,屬于行為型模式,提供一種方法順序訪問聚合對象的各個元素,而不暴漏該對象的內部表示。

這句話理解起來很容易,在java中,可以理解為遍歷集合對象,集合里面的對象是什么我不去理會,反正我給你遍歷出來就行了。有人說這不就是java里面的Interator遍歷?或者是for()循環遍歷集合嗎?
是的,JDK中已經把集合和迭代器整合的非常到位了。所以我們可以直接使用迭代器Interator,不過呢,迭代器本身就是一種設計模式,這一節,學習目的大于了使用的目的。

UML圖:

迭代器模型圖


aggregate:表示聚合(也可以叫做容器)的接口類,擁有獲取迭代器的方法(也可以不需要接口,直接使用實現)。
concreteAggregate:聚合接口的具體實現類,擁有獲取迭代器的方法。
Interator:迭代器接口類,(當然也可以不要,直接使用迭代器實現類)。
concreteInterator:迭代器實現類,擁有需要迭代的聚合對象(紅色部分)

這里面為什么需要把聚合和迭代器做成接口,不做借口其實照樣可以實現,不過,我們這里是為了更好地擴展,以后我們也可以添加多個聚合實現類和迭代器實現類。也符合我們設計模式的開閉原則,單一職責原則。


話不多說,直接上代碼:

迭代器接口類:

迭代器接口

迭代器實現類(擁有需要迭代的聚合對象):

迭代器實現類

需要迭代的容器接口類:(擁有迭代器)

迭代器接口

迭代器實現類:(擁有迭代器)

迭代器實現類

測試:

測試類


代碼其實很簡單,
Aggregate聚合對象,擁有自身的基本方法(添加方法,刪除方法等等),
interator對象,專門負責Aggregate的遍歷工作。



JDK中,幾乎所有的集合對象都擁有迭代器。
List(ArrayList,LinkedList等等)
Set(TreeSet,HashSet等等)
Map(HashMap,ConcurrentHashMap,LinkedHashMap等等)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。