歐洲的插座和美式的介面不同,買了美式的電腦,如何在歐洲使用,這就需要乙個介面卡。
不改變原來物件的介面,而實現想轉換成的型別的介面。
以鴨子為例,現在有乙隻火雞也想接收針對鴨子的請求。
// 鴨子介面
public inte***ce duck
// 綠頭鴨是鴨子的子類
public class mallardduck implements duck
public void fly()
}
// 火雞介面
public inte***ce turkey
// 火雞的實現
public class wildturkey implements turkey
public void fly()
}
// 介面卡,把火雞適配成鴨子
public class turkeyadapter implements duck
public void quack()
public void fly()
}}
// 主類
public class ducktestdrive
static void testduck(duck duck)
}
介面卡模式:將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。
介面卡模式充滿了良好的oo設計原則:使用物件組合以修改的介面包裝被介面卡,這種做法還有額外的優點,那就是被適配著的任何子類都可以搭配著介面卡使用。
實際上有兩種介面卡:
物件介面卡:上述為物件介面卡,利用組合方式將請求傳送給被適配者。(客戶呼叫鴨子類方法,介面卡實現鴨子介面,但它收到方法呼叫時會委託給火雞。)
類介面卡:利用多重繼承,繼承適配著和目標類。(客戶呼叫鴨子類方法,通過擴充套件鴨子和火雞兩個類,介面卡使得火雞可以相應對鴨子的請求,火雞沒有鴨子的方法,但是介面卡可以將對鴨子方法的呼叫轉接到呼叫火雞方法上。)
物件介面卡可以適配某個類(鴨子),同時也可以適配該類的任何子類(綠頭鴨),其通過組合的方法讓**更有彈性。而類介面卡則不需要重新實現整個被適配者,只需要乙個類介面卡,而不需要乙個介面卡和被適配者。
裝飾者模式和介面卡模式比較:
裝飾者模式:可以讓新行為加入到類中而無需修改原有**,無需進行介面轉接。
介面卡模式:允許客戶使用新的庫和子集合而無需改變任何**,會進行介面轉接。
設計模式入門 介面卡模式
配器模式將乙個類的介面適配成使用者所期待的 場景 現在手機的資料介面有兩種type c和micro usb,加入你現在有乙個micro usb的資料線,想給乙個type c介面的手機充電或者傳輸資料,這時你就需要乙個介面卡了 方式這裡介紹兩種介面卡設計方式 設計 物件介面卡 類介面卡 實現 公共 目...
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...