定義:將乙個類的介面轉換為客戶期望的另乙個介面,使原本介面不相容的兩個類可以一起工作。
介面卡模式是結構型設計模式,通常,我們在設計和編寫新專案的時候不需要考慮使用這種設計模式,它更多的是用在後期專案的維護上,是一種「亡羊補牢」的手段。比如說我們想要使用乙個已經存在的類,但是它的方法和需求不匹配的時候就可以使用介面卡模式,這種不匹配很可能是前期設計的缺陷。
介面卡模式可以分為類介面卡和物件介面卡,它們的區別在於類介面卡通過繼承的手段來進行適配,而物件介面卡通過組合的方式來進行適配。
介面卡模式有3個角色:
目標角色:期待得到的介面。
需要適配的介面。
介面卡:將需要適配的介面適配成目標介面。
舉例子:
現在我們的生活已經離不開手機了,每天都需要給手機充電,家用的電壓都是220v,但是我們的手機一般需要使用5v的輸出電壓進行充電,我們可以用充電器充電,通過它可以將220v適配成5v。在這裡,220v電壓就是需要適配的介面,5v是目標角色,而充電器就充當了我們的介面卡角色。
先使用類介面卡來進行適配,類介面卡是使用繼承來實現的。
需要適配的介面:
public class ac220v
}
目標角色:期待得到的介面。
public inte***ce dc5v
介面卡:將需要適配的介面適配成目標介面。通過繼承被適配者以及實現目標介面來定義
public class adapter extends ac220v implements dc5v
}
客戶端呼叫:
可以發現類介面卡確實是通過繼承的方式來實現,不過在開發中更多是使用物件介面卡,因為它更加靈活。
物件介面卡
需要適配的介面以及目標角色和上面一樣,物件介面卡如下:
public class objectadapter implements dc5v
@override
public void output5v()
}
可以看到物件介面卡實現了目標介面然後將需要適配的角色組合進來,它比通過繼承的方式更加靈活。
介面卡模式的優點:
提高了類的復用性,現有的類可以復用而不需要改變,通過介面卡模式來解決現有類和目標類不匹配問題、符合開閉原則以及提高了程式擴充套件性。
介面卡模式的缺點:
增加系統複雜度,降低了**的可讀性。
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 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...