大战设计模式【12】—— 迭代器模式
迭代器模式(Iterator)
?
設計模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample
?
一、定義
提供一種方法順序訪問一個聚合對象中的各個元素,而又不暴露其內部的表示。
?
二、結構
Iterator(抽象迭代器):定義了訪問和遍歷元素的接口,聲明了用于遍歷數據元素的方法。
ConcreteIterator(具體迭代器):它實現了抽象迭代器接口,完成對聚合對象的遍歷。
Aggregate(抽象聚合類):用于存儲和管理元素對象,聲明一個CreateIterator()方法用于創建一個迭代器對象,充當抽象迭代器工廠角色。
ConcreteAggregate(具體聚合類):實現了在抽象聚合類中聲明的CreateIterator()方法,返回一個對應的具體迭代器ConcreteIterator實例。
?
三、優點
支持以不同方式遍歷一個聚合對象,在同一個聚合對象上可以定義多種便利方式。
增加新的聚合類和迭代器類都很方便,無須修改原有代碼,符合開閉原則。
?
四、缺點
增加新的聚合類需要對應增加新的迭代器類
?
五、應用場景
訪問一個聚合對象的內容而無須暴露它的內部表示。
需要為一個聚合對象提供多種遍歷方式。
?
六、個人總結
1、如果你已經了解java中的迭代器,那么迭代器設計模式應該很容易理解,簡單的說,java利用這樣的設計模式設計出了它的迭代器
對于我們熟知的那些集合都可以使用迭代器去遍歷
2、例子中我們自己創建了迭代器的接口,這是我們學習所需要了解內部機制所用的
在實際中我們通常使用java.util.Iterator
?
?
?
參考博客:http://www.cnblogs.com/edisonchou/p/7442138.html轉載于:https://www.cnblogs.com/linkstar/p/7747226.html
總結
以上是生活随笔為你收集整理的大战设计模式【12】—— 迭代器模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CF876 F 思维 枚举
- 下一篇: asp.net ajax控件工具集 Au