




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄 適配器模式迭代器模式適配器模式假設(shè)有一個(gè)軟件系統(tǒng),希望它能和一個(gè)新的廠商類庫(kù)搭配使用,但是這個(gè)新廠商所設(shè)計(jì)出來的接口,不同于舊廠商的接口1、情景描述現(xiàn)有系統(tǒng)廠商類適配器模式1、情景描述 不想改變現(xiàn)有代碼,也不能改變廠商的代碼,怎么辦?現(xiàn)有系統(tǒng)廠商類適配器比如第三方開發(fā)組件,該組件接口與我們自己系統(tǒng)的接口不相同,或者由于某種原因無法直接調(diào)用該組件,可以考慮適配器。適配器模式2、定義作用:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。系統(tǒng)的數(shù)據(jù)和行為都正確,但接口不符時(shí),我們應(yīng)該考慮使用適配器,目的是使控制范圍之外的一個(gè)原有
2、對(duì)象與某個(gè)接口匹配。適配器模式主要應(yīng)用于希望復(fù)用一些現(xiàn)存的類,但是接口又與復(fù)用環(huán)境要求不一致的情況。分類:適配器模式分為類適配器模式和對(duì)象適配器模式。3、適配器介紹適配器模式該適配器模式所涉及的角色包括:目標(biāo)(Target)角色:這是客戶所期待的接口。因?yàn)镃#不支持多繼承,所以Target必須是接口,不可以是類。源(Adaptee)角色:需要適配的類。適配器(Adapter)角色:把源接口轉(zhuǎn)換成目標(biāo)接口。這一角色必須是類client希望使用的是Target.request(),而既有類使用的是Adaptee.SpecificRequest(),request()和SpecificRequest
3、()可能在返回值,參數(shù)列表都不同,類適配器模式和對(duì)象適配器模式都是通過嫁接一個(gè)Adapter進(jìn)行轉(zhuǎn)換。4、類適配器UML圖適配器模式適配器模式5、對(duì)象適配器UML圖6、兩種適配器模式比較類適配器對(duì)象適配器1、在Adapter類中可以對(duì)Adaptee類的方法進(jìn)行重定義;2、如果在Adaptee中添加了一個(gè)抽象方法,那么Adapter也要進(jìn)行相應(yīng)的改動(dòng)高耦合;3、在Adapter中無法調(diào)用Adaptee其它子類的方法。1、不是很容易去構(gòu)造一個(gè)Adaptee類型的對(duì)象;2、Adaptee中添加新的抽象方法時(shí),Adapter類不需要做任何調(diào)整;3、可以使用多態(tài)的方式在Adapter類中調(diào)用Adapte
4、e類子類的方法。適配器模式7、結(jié)論由于對(duì)象適配器的耦合度比較低,所以在很多的書中都建議使用對(duì)象適配器。在我們實(shí)際項(xiàng)目中,也是如此,能使用對(duì)象組合的方式,就不使用多繼承的方式。適配器模式迭代器模式1、情景描述在軟件系統(tǒng)的實(shí)現(xiàn)中,一定會(huì)遇到處理數(shù)組或者列表的情況,其內(nèi)部存儲(chǔ)的內(nèi)容都是相同的數(shù)據(jù)類型,當(dāng)遇到這種情況時(shí),我們通常的做法是使用如下的for循環(huán)語(yǔ)句,對(duì)數(shù)組或者列表內(nèi)容進(jìn)行遍歷,從而處理其中的數(shù)據(jù)內(nèi)容:for (int i = 0; i array.length; i+) /其他處理動(dòng)作System.out.println(arrayi);/其他處理動(dòng)作2、定義迭代器模式迭代器模式(Iter
5、ator Pattern),提供了一種模式順序訪問一個(gè)集合對(duì)象中各個(gè)元素的功能,而又不暴露其內(nèi)部的表示。3、模式分析迭代器模式如何遍歷集合對(duì)象1傳統(tǒng)的遍歷方法(1)耦合在集合對(duì)象內(nèi)部,讓容器實(shí)現(xiàn)遍歷功能;(2)讓調(diào)用集合對(duì)象的外部應(yīng)用自己實(shí)現(xiàn)遍歷算法。2增加第三方迭代器處理(1)迭代器需要做到能夠遍歷集合中的數(shù)據(jù);(2)迭代器在不需要暴露集合對(duì)象內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的情況 下,能夠遍歷集合中的數(shù)據(jù);(3)迭代器獲取集合對(duì)象內(nèi)部數(shù)據(jù)的方式,也不需要依賴于集合對(duì)象下標(biāo),即生成迭代器之后,就完全脫離集合對(duì)象的約束。4、調(diào)用關(guān)系迭代器模式迭代器模式由以下角色組成:1迭代器角色(Iterator):迭代器角色負(fù)責(zé)定義訪問和遍歷元素的接口。2具體迭代器角色(Concrete Iterator):具體迭代器角色要實(shí)現(xiàn)迭代器接口,并要記錄遍歷中的當(dāng)前位置。3集合角色(Aggregate):集合角色負(fù)責(zé)提供創(chuàng)建具體迭代器角色的接口。4具體集合角色(Concrete Aggregate):具體集合角色實(shí)現(xiàn)創(chuàng)建具體迭代器角色的接口這個(gè)具體迭代器角色于該集合的結(jié)構(gòu)相關(guān)。5、UML圖迭代器模式迭代器模式就是分離了集合對(duì)象的遍歷行為,抽象出一個(gè)迭代器類來負(fù)責(zé),這樣既可以做到不暴露集合的內(nèi)部結(jié)構(gòu),又可讓外部代碼透明地訪問集
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 快銷品分銷合同協(xié)議
- 商品房買賣定制合同協(xié)議
- 商城購(gòu)物合同協(xié)議模板
- 商場(chǎng)排他協(xié)議合同模板
- 員工項(xiàng)目入股協(xié)議書范本
- 商服轉(zhuǎn)租合同協(xié)議
- 模具投放協(xié)議書范本
- 微信代理協(xié)議書范本
- 商業(yè)承兌融資合同協(xié)議
- 快餐小吃供貨合同協(xié)議
- 2025金湖輔警考試題庫(kù)
- 融水同練鄉(xiāng)初級(jí)中學(xué)-如何識(shí)別與預(yù)防孩子的心理問題【課件】
- 統(tǒng)編版道德與法治四年級(jí)下冊(cè)第9課《生活離不開他們》精美課件
- 中華農(nóng)耕文化歷史與現(xiàn)實(shí)知到課后答案智慧樹章節(jié)測(cè)試答案2025年春中國(guó)農(nóng)業(yè)大學(xué)
- 冀少 七年級(jí) 下冊(cè) 生物 第三章 呼吸系統(tǒng)與氣體交換《呼吸的過程(一、肺與外界的氣體交換)》課件
- 預(yù)制菜銷售合同8篇
- 2025年上半年浙江杭州錢塘新區(qū)管理委員會(huì)招聘政府雇員80人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025湖北日?qǐng)?bào)傳媒集團(tuán)招聘45人筆試參考題庫(kù)附帶答案詳解
- 2025春教科版(2024)小學(xué)一年級(jí)下冊(cè)科學(xué)全冊(cè)教案
- 2025年山東高速路橋集團(tuán)股份有限公司招聘筆試參考題庫(kù)含答案解析
- 天車安全教育培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論