2016的最後一天,回望過去,展望未來。這一年發生了太多太多,迷茫裡小半年,也慶幸自己在這一年的尾巴找到了方向,重新上路。2017,只希望自己能夠好好的學習,體會程式設計的快樂。祝所有的朋友,新年快樂!
最後一天學習的是介面卡模式。
介面卡模式(adapter pattern)
定義:將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。
模式中的角色
目標介面(target):客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。
需要適配的類(adaptee):需要適配的類或適配者類。
介面卡(adapter):通過包裝乙個需要適配的物件,把原介面轉換成目標介面。
類圖:
例項**(大話設計模式 籃球翻譯介面卡):
player.cs
abstract class player
public abstract void attack();
public abstract void defence();
}
guards.cs
class guards : player
public override void attack()
進攻", name);
}public override void defence()
防守", name);}}
forwards.cs
class forwards : player
public override void attack()
進攻", name);
}public override void defence()
防守", name);}}
translator.cs(介面卡)
class translator : player
public override void attack()
public override void defence()
}
foreigncenter.cs(需要適配的類)
class foreigncenter
set
}public void 進攻()
進攻", name);
}public void 防守()
防守", name);}}
program.cs
class program
}
優點通過介面卡,客戶端可以呼叫同一介面,因而對客戶端來說是透明的。這樣做更簡單、更直接、更緊湊。
復用了現存的類,解決了現存類和復用環境要求不一致的問題。
將目標類和適配者類解耦,通過引入乙個介面卡類重用現有的適配者類,而無需修改原有**。
乙個物件介面卡可以把多個不同的適配者類適配到同乙個目標,也就是說,同乙個介面卡可以把適配者類和它的子類都適配到目標介面。
缺點對於物件介面卡來說,更換介面卡的實現過程比較複雜。
適用場景
系統需要使用現有的類,而這些類的介面不符合系統的介面。
想要建立乙個可以重用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。
兩個類所做的事情相同或相似,但是具有不同介面的時候。
舊的系統開發的類已經實現了一些功能,但是客戶端卻只能以另外介面的形式訪問,但我們不希望手動更改原有類的時候。
使用第三方元件,元件介面定義和自己定義的不同,不希望修改自己的介面,但是要使用第三方元件介面的功能。
介面卡模式 預設介面卡,類介面卡,物件介面卡
模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...
android學習 陣列介面卡 簡單介面卡
資料介面卡是將複雜的資料來源填充到指定的檢視介面中 1 陣列介面卡arrayadapter 用於繫結型別單一的資料,資料 可以是陣列或集合 2 簡單介面卡 adapter 也叫 並不簡單的簡單介面卡 用於繫結格式複雜的資料,資料 只能是特定泛型的集合 作用 介面卡是連線資料來源和檢視介面的橋梁 介面...