設計模式-適配器模式和迭代器模式_第1頁
設計模式-適配器模式和迭代器模式_第2頁
設計模式-適配器模式和迭代器模式_第3頁
設計模式-適配器模式和迭代器模式_第4頁
設計模式-適配器模式和迭代器模式_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目 錄 適配器模式迭代器模式適配器模式假設有一個軟件系統,希望它能和一個新的廠商類庫搭配使用,但是這個新廠商所設計出來的接口,不同于舊廠商的接口1、情景描述現有系統廠商類適配器模式1、情景描述 不想改變現有代碼,也不能改變廠商的代碼,怎么辦?現有系統廠商類適配器比如第三方開發組件,該組件接口與我們自己系統的接口不相同,或者由于某種原因無法直接調用該組件,可以考慮適配器。適配器模式2、定義作用:將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。系統的數據和行為都正確,但接口不符時,我們應該考慮使用適配器,目的是使控制范圍之外的一個原有

2、對象與某個接口匹配。適配器模式主要應用于希望復用一些現存的類,但是接口又與復用環境要求不一致的情況。分類:適配器模式分為類適配器模式和對象適配器模式。3、適配器介紹適配器模式該適配器模式所涉及的角色包括:目標(Target)角色:這是客戶所期待的接口。因為C#不支持多繼承,所以Target必須是接口,不可以是類。源(Adaptee)角色:需要適配的類。適配器(Adapter)角色:把源接口轉換成目標接口。這一角色必須是類client希望使用的是Target.request(),而既有類使用的是Adaptee.SpecificRequest(),request()和SpecificRequest

3、()可能在返回值,參數列表都不同,類適配器模式和對象適配器模式都是通過嫁接一個Adapter進行轉換。4、類適配器UML圖適配器模式適配器模式5、對象適配器UML圖6、兩種適配器模式比較類適配器對象適配器1、在Adapter類中可以對Adaptee類的方法進行重定義;2、如果在Adaptee中添加了一個抽象方法,那么Adapter也要進行相應的改動高耦合;3、在Adapter中無法調用Adaptee其它子類的方法。1、不是很容易去構造一個Adaptee類型的對象;2、Adaptee中添加新的抽象方法時,Adapter類不需要做任何調整;3、可以使用多態的方式在Adapter類中調用Adapte

4、e類子類的方法。適配器模式7、結論由于對象適配器的耦合度比較低,所以在很多的書中都建議使用對象適配器。在我們實際項目中,也是如此,能使用對象組合的方式,就不使用多繼承的方式。適配器模式迭代器模式1、情景描述在軟件系統的實現中,一定會遇到處理數組或者列表的情況,其內部存儲的內容都是相同的數據類型,當遇到這種情況時,我們通常的做法是使用如下的for循環語句,對數組或者列表內容進行遍歷,從而處理其中的數據內容:for (int i = 0; i array.length; i+) /其他處理動作System.out.println(arrayi);/其他處理動作2、定義迭代器模式迭代器模式(Iter

5、ator Pattern),提供了一種模式順序訪問一個集合對象中各個元素的功能,而又不暴露其內部的表示。3、模式分析迭代器模式如何遍歷集合對象1傳統的遍歷方法(1)耦合在集合對象內部,讓容器實現遍歷功能;(2)讓調用集合對象的外部應用自己實現遍歷算法。2增加第三方迭代器處理(1)迭代器需要做到能夠遍歷集合中的數據;(2)迭代器在不需要暴露集合對象內部實現細節的情況 下,能夠遍歷集合中的數據;(3)迭代器獲取集合對象內部數據的方式,也不需要依賴于集合對象下標,即生成迭代器之后,就完全脫離集合對象的約束。4、調用關系迭代器模式迭代器模式由以下角色組成:1迭代器角色(Iterator):迭代器角色負責定義訪問和遍歷元素的接口。2具體迭代器角色(Concrete Iterator):具體迭代器角色要實現迭代器接口,并要記錄遍歷中的當前位置。3集合角色(Aggregate):集合角色負責提供創建具體迭代器角色的接口。4具體集合角色(Concrete Aggregate):具體集合角色實現創建具體迭代器角色的接口這個具體迭代器角色于該集合的結構相關。5、UML圖迭代器模式迭代器模式就是分離了集合對象的遍歷行為,抽象出一個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部代碼透明地訪問集

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論