適配器模式:將一個類的接口轉換成客戶希望的另一個接口。適配器模式讓那些接口不兼容的類可以一起工作。
適配器就是一種適配中間件,它存在於不匹配的二者之間,用於連接二者,將不匹配變得匹配,簡單點理解就是平常所見的轉接頭,轉換器之類的存在。適配器模式主要應用於希望複用一些現存的類,但是接口又與複用環境要求不一致的情況。
適配器模式有兩種:類適配器模式和對象適配器模式及哦,其中對象適配器模式更常用。
UML類圖
類適配器模式:
//vga接口
interface Vga{
void showVga();
}
//usb接口
interface Usb{
void showUsb();
}
//usb實現類usber
class Usber implements Usb{
@Override
public void showUsb() {
System.out.println("usb");
}
}
//適配器
class Adapter1 extends Usber implements Vga{
@Override
public void showVga() {
showUsb();
}
}
public class Test {
public static void main(String[] args) {
Vga vga = new Adapter1();
vga.showVga();
}
}
通過適配器,使vga接口變爲usb接口。
對象適配器模式:
//vga接口
interface Vga{
void showVga();
}
//usb接口
interface Usb{
void showUsb();
}
//usb實現類usber
class Usber implements Usb{
@Override
public void showUsb() {
System.out.println("usb");
}
}
//適配器
class Adapter1 implements Vga{
private Usb usb;
public Adapter1(Usb usb){
this.usb = usb;
}
@Override
public void showVga() {
usb.showUsb();
}
}
public class Test {
public static void main(String[] args) {
Vga vga = new Adapter1(new Usber());
vga.showVga();
}
}
通過組合的方式實現適配器功能,在適配器中定義私有變量usb,再定義一個帶參數的構造器爲對象usb賦值,再在vga接口的實現方法中使用usb對象調用usb接口的方法。
此外還有接口適配器模式,適用於接口中有很多方法,而我們只想使用其中的一個或幾個方法,如果我們直接實現接口,那麼我們要對所有的方法進行實現,哪怕我們僅僅是對不需要的方法進行置空(只寫一對大括號,不做具體方法實現)也會導致這個類變得臃腫,調用也不方便,這時我們可以使用一個抽象類作爲中間件,即適配器,用這個抽象類實現接口,而在抽象類中所有的方法都進行置空,那麼我們在創建抽象類的繼承類,而且重寫我們需要使用的那幾個方法即可。