介面卡模式把乙個類的介面轉換成客戶端所期待的另一種介面,從而使原本因介面不匹配而不相容的兩個類能夠在一起工作。
預設介面卡模式為乙個介面提供預設實現,這樣子型別可以從這個預設實現進行擴充套件,而不必從原有介面進行擴充套件。介面卡模式的用意是改變源角色介面形式,以便於與目標介面相相容,預設的介面卡用意則是為了方便建立乙個不平庸的介面卡類而提供的一種平庸的實現。
介面卡模式有類的介面卡模式和物件的介面卡模式:
類介面卡模式使用繼承的方式,是靜態的定義方式;物件介面卡模式使用組合的方式,是動態的定義方式;
類的介面卡模式可以重定義源角色的部分行為,相當於子類覆蓋父類的部分方法;物件的介面卡需要定義源角色的子類來實現重定義,然後組合子類;當想要增加一些新的行為時使用物件的介面卡模式很方便且可同時適用於所有的源角色;
對於物件介面卡,乙個介面卡可以把不同的源適配到同一目標;
示例:
public
void getacolor(string str) }
class orange }
private orange orange;
this.orange = orange;
}public
void getacolor(string str) }
public
class testadapter }
多用聚合/組合,少用繼承。
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...
介面卡模式 預設介面卡,類介面卡,物件介面卡
模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...