




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
9迭代器與組合模式管理良好的集合對(duì)象村餐廳&對(duì)象村煎餅屋對(duì)象村餐廳&對(duì)象村煎餅屋現(xiàn)在我們可以在同一個(gè)地方,享用煎餅屋美味的煎餅早餐,和好吃的餐廳午餐了可好像有一點(diǎn)小麻煩……早餐師父午餐師父對(duì)象村餐廳&對(duì)象村煎餅屋他們想用我的煎餅屋菜單當(dāng)做早餐的菜單,并用餐廳的菜單當(dāng)做街區(qū)的菜單。我們大家都同意這樣實(shí)現(xiàn)菜單項(xiàng)…………但是我們無法同意菜單的實(shí)現(xiàn)。那個(gè)小丑使用ArrayList記錄菜單項(xiàng),而我用數(shù)組。我們都不愿意改變自己,畢竟我們有太多的依賴對(duì)象村餐廳&對(duì)象村煎餅屋檢查菜單項(xiàng)對(duì)象村餐廳&對(duì)象村煎餅屋為方便擴(kuò)展菜單,我采用ArrayList對(duì)象村餐廳&對(duì)象村煎餅屋為控制菜單的長度,并且取菜單項(xiàng)時(shí)直接定位,不用轉(zhuǎn)型,所以我選用真正的數(shù)組對(duì)象村餐廳&對(duì)象村煎餅屋女招待員打印出菜單上的每一項(xiàng):存在什么樣的問題?對(duì)象村餐廳&對(duì)象村煎餅屋對(duì)象村餐廳&對(duì)象村煎餅屋可否不改變自身的實(shí)現(xiàn),而讓他們的菜單實(shí)現(xiàn)一個(gè)相同的接口,這樣一來,就可以最小化女招待代碼中的具體引用,同時(shí)還能擺脫遍歷這兩個(gè)菜單所需的多個(gè)循環(huán)。對(duì)象村餐廳&對(duì)象村煎餅屋讓我們一起來看一下遍歷過程:要遍歷早餐項(xiàng),我們使用ArrayList的size()和get()方法for(inti=0;i<breakfastItems.size();i++){MenuItem
menuItem=(MenuItem)breakfastItems.get(i);}要遍歷午餐項(xiàng),我們使用數(shù)組的length字段和下標(biāo)值:for(inti=0;i<lunchItems.length;i++){MenuItem
menuItem=lunchItems[i];}對(duì)象村餐廳&對(duì)象村煎餅屋應(yīng)用在ArrayList上:Iterator
iterator=breakfastMenu.createIterator();While(iterator.hasNext()){MenuItem
menuItem=(MenuItem)iterator.next();}現(xiàn)在我們創(chuàng)建一個(gè)迭代器(Iterator)對(duì)象,利用它來封裝“遍歷集合內(nèi)的每個(gè)對(duì)象的過程”:應(yīng)用在數(shù)組上:Iterator
iterator=lunchMenu.createIterator();While(iterator.hasNext()){MenuItem
menuItem=(MenuItem)iterator.next();}對(duì)象村餐廳&對(duì)象村煎餅屋對(duì)象村餐廳&對(duì)象村煎餅屋利用java.util.Iterator定義提供一種方法順序訪問一個(gè)聚合對(duì)象中的各個(gè)元素,而又不暴露其內(nèi)部的表示。迭代器模式迭代器模式意圖提供一種方法順序訪問一個(gè)聚合對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部表示。迭代器模式結(jié)構(gòu)圖迭代器模式結(jié)構(gòu)圖各角色解析:Iterator:定義訪問和遍歷元素的接口ConcreteIterator:具體迭代器,實(shí)現(xiàn)迭代器接口,對(duì)該聚合遍歷時(shí)跟蹤當(dāng)前位置Aggregate:聚合,定義創(chuàng)建相應(yīng)迭代器對(duì)象的接口ConcreteAggregate:具體聚合,其工作是實(shí)現(xiàn)相應(yīng)迭代器的接口,返回具體迭代器的一個(gè)適當(dāng)?shù)膶?shí)例迭代器模式適用場景:訪問一個(gè)聚合對(duì)象的內(nèi)容而無需暴露它的內(nèi)部表示支持對(duì)聚合對(duì)象的多種遍歷為遍歷不同的聚合結(jié)構(gòu)提供一個(gè)統(tǒng)一的接口(即,支持多態(tài)迭代)迭代器模式缺點(diǎn):和集合密切相關(guān),限制了其廣泛使用優(yōu)點(diǎn):1、支持以不同的方式遍歷一個(gè)聚合2、簡化了聚合的接口3.可同時(shí)進(jìn)行多個(gè)遍歷迭代器模式--體現(xiàn)的設(shè)計(jì)原則設(shè)計(jì)原則“單一職責(zé)原則”一個(gè)類應(yīng)該只有一個(gè)引起變化的原因迭代器模式——進(jìn)一步思考對(duì)象村將對(duì)象村咖啡廳也合并進(jìn)來,供應(yīng)晚餐菜單試問:如何利用迭代器模式解決這個(gè)問題?迭代器模式作業(yè)公共汽車售票員工作的場景售票員不管上來的是人還是物(行李),不管是中國人還是外國人,不管是內(nèi)部員工還是別的,只要是來乘車的乘客,就必須要買票。也就是說,當(dāng)我們需要訪問一個(gè)聚集對(duì)象,而且不管這些對(duì)象是什么都需要遍歷的時(shí)候,就應(yīng)該考慮用迭代子模式。迭代器模式公共汽車售票員工作的場景另外,售票員從車頭到車尾來售票,也可以從車尾向車頭來售票,也就是說,當(dāng)我們需要對(duì)聚集有多種方式遍歷時(shí),可以考慮用迭代器模式。由于不管乘客是什么,售票員的做法始終是相同的,都是從第一個(gè)開始,下一個(gè)是誰,是否結(jié)束,當(dāng)前售到哪一個(gè)人了,這些方法每天他都在做,也就是說,當(dāng)遍歷不同的聚集結(jié)構(gòu)提供如開始、下一個(gè)、是否結(jié)束,當(dāng)前哪一項(xiàng)等統(tǒng)一的。迭代器模式假定輸出結(jié)果如下,試在IDE工具中給出其代碼:組合模式在對(duì)象村餐廳中,如果我們希望加一份餐后甜點(diǎn),怎么辦?組合模式組合模式比如:賣電腦的商家,可賣單獨(dú)配件也可賣組裝整機(jī)比如:復(fù)制文件,可一個(gè)一個(gè)文件復(fù)制粘貼也可整個(gè)文件夾進(jìn)行復(fù)制比如:文本編輯,可給單個(gè)字加粗、變色、改字體,亦可以整段文字做同樣的操作定義允許你將對(duì)象組合成樹形結(jié)構(gòu)來表現(xiàn)“整體/部分”層次結(jié)構(gòu)。組合能讓客戶以一致的方式處理個(gè)別對(duì)象以及對(duì)象組合。組合模式組合模式意圖將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。組合模式結(jié)構(gòu)圖組合模式結(jié)構(gòu)圖各角色解析:Component:為組合中的對(duì)象聲明接口Leaf:在組合中表示沒有子結(jié)點(diǎn)的葉結(jié)點(diǎn)組合模式適用場景:希望把對(duì)象表示成部分-整體層次結(jié)構(gòu)希望用戶忽略組合對(duì)象與單個(gè)對(duì)象的不同,用戶將統(tǒng)一地使用組合結(jié)構(gòu)中所有對(duì)象組合模式缺點(diǎn):限制了接口的影響范圍優(yōu)點(diǎn):1、定義了包含基本對(duì)象和組合對(duì)象的類層次結(jié)構(gòu)2、簡化客戶代碼3.使得增加新類型的組件更加容易組合模式作業(yè)公司管理系統(tǒng)背景:某一公司在北京有總部,在全國各大城市設(shè)有分公
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)場種菜出租合同樣本
- 凈水項(xiàng)目售后合同標(biāo)準(zhǔn)文本
- 農(nóng)村換工雇工合同標(biāo)準(zhǔn)文本
- pvc管子供應(yīng)合同標(biāo)準(zhǔn)文本
- 倉庫租賃搬家合同樣本
- 秋季學(xué)期師生關(guān)系改善項(xiàng)目計(jì)劃
- 婦產(chǎn)科產(chǎn)前檢查流程完善計(jì)劃
- 二手房屋轉(zhuǎn)讓合同樣本
- 2025掌握合同翻譯關(guān)鍵英語詞匯:輕松看懂英文合同
- 農(nóng)田建設(shè)項(xiàng)目合同樣本
- 倫理與禮儀 知到智慧樹網(wǎng)課答案
- 康養(yǎng)活動(dòng)策劃方案
- DB11/1950-2021-公共建筑無障礙設(shè)計(jì)標(biāo)準(zhǔn)
- 2024新生兒肺炎個(gè)案護(hù)理
- 2022版新課標(biāo)核心素養(yǎng)關(guān)鍵詞解讀-運(yùn)算能力主題研討與教學(xué)分享
- 安委會(huì)-安委會(huì)工作總結(jié)
- 防汛預(yù)案桌面演練(終)課件
- 山東專業(yè)就業(yè)分析報(bào)告???/a>
- 工裝裝修策劃方案
- 青年教師專業(yè)成長之路
- 采購管理系統(tǒng)的六大功能模塊
評(píng)論
0/150
提交評(píng)論