91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

“Head First 設計模式“ :適配器模式

發布時間:2020-08-06 18:20:12 來源:網絡 閱讀:732 作者:u2r2otkit 欄目:軟件技術

適配器模式


適配器模式定義:將一個類的接口,轉化成客戶期望的另一個接口,適配器讓原本接口不兼容的類可以合作無間。對象適配器類圖如下:
“Head First 設計模式“ :適配器模式
角色說明
● Target,目標接口
● Adapter,適配器
● Adaptee,被適配對象
● Client,客戶端


客戶使用適配器的過程如下
● 客戶通過目標接口調用適配器的方法對適配器發出請求。
● 適配器使用被適配者接口把請求轉換成被適配者的一個或多個調用接口。
● 客戶接收到調用的結果,但并未察覺這一切是適配器在起轉換作用。


適配器模式的優點
● 將目標類和適配者類解耦,通過引入一個適配器類來重用現有的適配者類,無需修改原有結構。
● 增加了類的透明性和復用性,將具體的業務實現過程封裝在適配者類中,對于客戶端類而言是透明的,而且提高了適配者的復用性,同一適配者類可以在多個不同的系統中復用。
● 靈活性和擴展性都非常好,通過使用配置文件,可以很方便的更換適配器,也可以在不修改原有代碼的基礎上 增加新的適配器,完全復合開閉原則。


適配器模式的缺點
● 一次最多只能適配一個適配者類,不能同時適配多個適配者。
● 目標抽象類只能為接口,不能為類,其使用有一定的局限性。


適配器模式的使用場景
● 系統需要使用一些現有的類,而這些類的接口不符合系統的需要,甚至沒有這些類的源代碼
● 創建一個可以重復使用的類,用于和一些彼此之間沒有太大關聯的類,包括一些可能在將來引進的類一起工作


擴展
● 雙向適配器,兩個接口互相轉換,省略類圖,說明
● 類適配器,Java不支持多重繼承,所以省略類圖,說明


案例1:假設已有一個軟件系統,你希望它能和一個新的廠商類庫搭配使用,但是這個新的廠商所設計出來的接口不同于舊廠商的接口。怎么實現好,如下:
“Head First 設計模式“ :適配器模式
解決辦法,我們不改目前代碼的情況下,加一個適配器(Adapter)類,適配器對用戶來說透明的,如下:

“Head First 設計模式“ :適配器模式


案例2:有鴨子接口(鴨子能飛,呱呱叫),火雞接口(可以飛點,姑姑叫),假設我們缺鴨子對象,用火雞來冒充,類圖如下:
“Head First 設計模式“ :適配器模式


案例3:JDK中早起版本的Collection集合都實現了一個elements(),該方法返回一個包含集合里的每一個元素的枚舉,新版本的JDK里用Iterator來代替了,而且Iterator還提供了刪除元素的能力,假設有一個預留代碼,這個代碼爆出枚舉接口,但是我們想新代碼中使用迭代器,我們用適配器模式來解決,如下:
“Head First 設計模式“ :適配器模式


案例4: JDK里IO框架里的InputStreamReader,OutputStreamReader使用的是適配器模式,如下:
“Head First 設計模式“ :適配器模式

說明:
● InputStream,OutputStream是被適配對象。
● Reader,Writer是目標接口。
● StreamEncoder是中間類,byte類型轉字符時需要編碼轉換的,貴類的作用就是這個。
● InputStreamReader,OutputStreamReader是適配器類。


設計原則:“最少知識”原則:只和你的密友談話。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大冶市| 台湾省| 松滋市| 康平县| 黄梅县| 芜湖市| 镇平县| 郯城县| 阿鲁科尔沁旗| 敦煌市| 阳城县| 裕民县| 乳源| 南康市| 民勤县| 北流市| 建湖县| 高雄县| 洪泽县| 会东县| 方城县| 监利县| 文昌市| 河池市| 嵩明县| 扶绥县| 广州市| 区。| 武威市| 买车| 明星| 商丘市| 铜山县| 三门峡市| 池州市| 临朐县| 确山县| 常熟市| 遵义县| 秭归县| 灵武市|