




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第20章迭代器模式
本章教學內容迭代器模式模式動機與定義模式結構與分析模式實例與解析模式效果與應用模式擴展迭代器模式模式動機一個聚合對象,如一個列表(List)或者一個集合(Set),應該提供一種方法來讓別人可以訪問它的元素,而又不需要暴露它的內部結構。針對不同的需要,可能還要以不同的方式遍歷整個聚合對象,但是我們并不希望在聚合對象的抽象層接口中充斥著各種不同遍歷的操作。怎樣遍歷一個聚合對象,又不需要了解聚合對象的內部結構,還能夠提供多種不同的遍歷方式,這就是迭代器模式所要解決的問題。迭代器模式模式動機迭代器模式模式動機在迭代器模式中,提供一個外部的迭代器來對聚合對象進行訪問和遍歷,迭代器定義了一個訪問該聚合元素的接口,并且可以跟蹤當前遍歷的元素,了解哪些元素已經遍歷過而哪些沒有。有了迭代器模式,我們會發現對一個復雜的聚合對象的操作會變得如此簡單。迭代器模式模式定義迭代器模式(IteratorPattern):提供一種方法來訪問聚合對象,而不用暴露這個對象的內部表示,其別名為游標(Cursor)。迭代器模式是一種對象行為型模式。迭代器模式模式定義IteratorPattern:Provideawaytoaccesstheelementsofanaggregateobjectsequentiallywithoutexposingitsunderlyingrepresentation.Frequencyofuse:high迭代器模式模式結構迭代器模式模式結構迭代器模式包含如下角色:Iterator:抽象迭代器ConcreteIterator:具體迭代器Aggregate:抽象聚合類ConcreteAggregate:具體聚合類迭代器模式模式分析聚合是一個管理和組織數據對象的數據結構。聚合對象主要擁有兩個職責:一是存儲內部數據;二是遍歷內部數據。存儲數據是聚合對象最基本的職責。將遍歷聚合對象中數據的行為提取出來,封裝到一個迭代器中,通過專門的迭代器來遍歷聚合對象的內部數據,這就是迭代器模式的本質。迭代器模式是“單一職責原則”的完美體現。
迭代器模式模式分析自定義迭代器MyIterator——抽象迭代器MyCollection——抽象聚合類NewCollection——具體聚合類NewIterator——具體迭代器Client迭代器模式模式分析自定義迭代器
參考代碼(Chapter20Iterator\SimpleIterator)演示……迭代器模式模式分析迭代器模式常規實現代碼:publicclassConcreteIteratorimplementsIterator{ privateConcreteAggregateobjects;
publicConcreteIterator(ConcreteAggregateobjects) { this.objects=objects; } publicvoidfirst() {......}
publicvoidnext() {......} publicbooleanhasNext() {......}
publicObjectcurrentItem() {......}}publicclassConcreteAggregateimplementsAggregate{ ...... publicIteratorcreateIterator() { returnnewConcreteIterator(this); } ......}迭代器模式模式分析在迭代器模式中應用了工廠方法模式,聚合類充當工廠類,而迭代器充當產品類,由于定義了抽象層,系統的擴展性很好,在客戶端可以針對抽象聚合類和抽象迭代器進行編程。由于很多編程語言的類庫都已經實現了迭代器模式,因此在實際使用中我們很少自定義迭代器,只需要直接使用Java、C#等語言中已定義好的迭代器即可,迭代器已經成為我們操作聚合對象的基本工具之一。迭代器模式迭代器模式實例與解析實例:電視機遙控器電視機遙控器就是一個迭代器的實例,通過它可以實現對電視機頻道集合的遍歷操作,本實例我們將模擬電視機遙控器的實現。
迭代器模式迭代器模式實例與解析實例:電視機遙控器迭代器模式迭代器模式實例與解析實例:電視機遙控器參考代碼(Chapter20Iterator\sample01)演示……迭代器模式模式優缺點迭代器模式的優點它支持以不同的方式遍歷一個聚合對象。迭代器簡化了聚合類。在同一個聚合上可以有多個遍歷。在迭代器模式中,增加新的聚合類和迭代器類都很方便,無須修改原有代碼,滿足“開閉原則”的要求。迭代器模式模式優缺點迭代器模式的缺點由于迭代器模式將存儲數據和遍歷數據的職責分離,增加新的聚合類需要對應增加新的迭代器類,類的個數成對增加,這在一定程度上增加了系統的復雜性。迭代器模式模式適用環境在以下情況下可以使用迭代器模式:訪問一個聚合對象的內容而無須暴露它的內部表示。需要為聚合對象提供多種遍歷方式。為遍歷不同的聚合結構提供一個統一的接口。迭代器模式模式應用JDK1.2引入了新的Java聚合框架Collections。迭代器模式模式應用Collection是所有Java聚合類的根接口。在JDK類庫中,Collection的iterator()方法返回一個java.util.Iterator類型的對象,而其子接口java.util.List的listIterator()方法返回一個java.util.ListIterator類型的對象,ListIterator是Iterator的子類。它們構成了Java語言對迭代器模式的支持,Java語言的java.util.Iterator接口就是迭代器模式的應用。迭代器模式模式應用Java內置迭代器參考代碼(Chapter20Iterator\JavaIterator)演示……迭代器模式模式擴展Java迭代器在JDK中,Iterator接口具有如下3個基本方法:(1)Objectnext():通過反復調用next()方法可以逐個訪問聚合中的元素。(2)booleanhasNext():hasNext()方法用于判斷聚合對象中是否還存在下一個元素,為了不拋出異常,必須在調用next()之前先調用hasNext()。如果迭代對象仍然擁有可供訪問的元素,那么hasNext()返回true。(3)voidremove():用于刪除上次調用next()時所返回的元素。迭代器模式模式擴展Java迭代器Java迭代器可以理解為它工作在聚合對象的各個元素之間,每調用一次next()方法,迭代器便越過下個元素,并且返回它剛越過的那個元素的地址引用。但是,它也有一些限制,如某些迭代器只能單向移動。在使用迭代器時,訪問某個元素的唯一方法就是調用next()。迭代器模式模式擴展Java迭代器代碼示例:Iteratoriterator=collection.iterator();//collection是已實例化的集合對象iterator.next(); //跳過第一個元素iterator.remove(); //刪除第一個元素iterator.remove();iterator.next();//該語句不能去掉iterator.remove();本章小結迭代器模式提供一種方法來訪問聚合對象,而不用暴露這個對象的內部表示,其別名為游標。迭代器模式是一種對象行為型模式。迭代器模式包含四個角色:抽象迭代器定義了訪問和遍歷元素的接口;具體迭代器實現了抽象迭代器接口,完成對聚合對象的遍歷;抽象聚合類用于存儲對象,并定義創建相應迭代器對象的接口;具體聚合類實現了創建相應迭代器的接口。將遍歷聚合對象中數據的行為提取出來,封裝到一個迭代器中,通過專門的迭代器來遍歷聚合對象的內部數據,這就是迭代器模式的本質。迭代器模式是“單一職責原則”的完美體現。本章小結迭代器模式的主要優點在于它支持以不同的方式遍歷一個聚合對象,還簡化了聚合類,而且在同一個聚合上可以有多個遍歷;其缺點在于增加新的聚合類需要對應增加新的迭代器類,類的個數成對增加,這在一定程度上增加了系統的復雜性。迭代器模式適用情況包括:訪問一個聚合對象的內容而無須暴露它的內部表示;需要為聚合對象提供多種遍歷方式;為遍歷不同的聚合結構提供一個統一的接口。在J
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年福建省福州市福九聯盟高二(下)期中數學試卷(含答案)
- 北京市東城區2023-2024學年五年級下學期語文期末試卷(含答案)
- DB36T-刺鲃養殖技術規范編制說明
- 專業與熱情結合 2024年籃球裁判員試題及答案
- 2024年模具設計師資格認證考試核心知識復習與試題及答案
- 電力公司崗前培訓課件
- 四年級數學(三位數乘兩位數)計算題專項練習及答案
- 2024年農業植保員考試的重要備考技巧試題及答案
- 人教版初中英語八年級上學期期末考試卷6英語試題含聽力音頻及答案解析
- 2024年4月21日廣東省事業單位高校畢業生招聘考試《基本能力測試》試題真題試卷答案解析
- 南美白對蝦養殖課件
- 房建工程樣板策劃及實施方案
- 二年級數學生活中的推理-完整版PPT
- 《環境生態學導論(第二版)》課件第二章 生物與環境
- 車床、鉆床安全風險辨識清單
- (完整版)保溫工藝課件
- BLM(含樣例)(培訓調研)課件(PPT 121頁)
- T∕CVIA 73-2019 視覺疲勞測試與評價方法 第2部分:量表評價方法
- 小學美術課件-第12課太空旅行-冀美版(16張PPT)ppt課件
- 美國房屋租賃合同完整版(中英文)
- ISO9001質量管理體系文件
評論
0/150
提交評論