天天看點

擴充卡模式(Adapter Pattern)概述類擴充卡對象擴充卡

概述

擴充卡模式(Adapter Pattern)又叫做變壓器模式,是指将一個類的接口轉換成客戶期望的另一個接口,使 原本的接口不相容的類可以一起工作,屬于結構型設計模式。

根據擴充卡類與适配者類的關系不同,擴充卡模式可分為對象擴充卡和類擴充卡兩種,在對象擴充卡模式中,擴充卡與适配者之間是關聯關系;在類擴充卡模式中,擴充卡與适配者之間是繼承(或實作)關系。

生活中有非常多的應用場景,例如手機充電轉換頭、顯示器轉接頭、網口轉接頭等。

場景:

1、已經存在的類,它的方法和需求不比對(方法結果相同或相似)的情況。

2、擴充卡模式不是軟體設計階段考慮的設計模式,是随着軟體維護,由于不同産品、不 同廠家造成功能類似而接口不相同情況下的解決方案。有點亡羊補牢的感覺。

類擴充卡

擴充卡模式(Adapter Pattern)概述類擴充卡對象擴充卡
public class AC220 {
    public int outputAC220V(){
        int output = 220;
        System.out.println("輸出電流" + output + "V");
        return output;
    }
}

           
public interface DC5 {
    int outoupDC5V();
}
           
public class PowerAdapter extends AC220 implements DC5 {

    public int outoupDC5V() {
        int adapterInput = super.outputAC220V();
        int adapterOutput = adapterInput / 44;
        System.out.println("使用PowerAdapter輸入AC:" + adapterInput + "V,輸出DC:" + adapterOutput + "V");
        return adapterOutput;
    }
}
           
public class PowerAdapterTest {
    public static void main(String[] args) {
        DC5 dc5 = new PowerAdapter();
        dc5.outoupDC5V();
    }
}
           

對象擴充卡

類結構圖

擴充卡模式(Adapter Pattern)概述類擴充卡對象擴充卡
public class AC220 {
    public int outputAC220V(){
        int output = 220;
        System.out.println("輸出電流" + output + "V");
        return output;
    }
}
           
public interface DC5 {
    int outoupDC5V();
}

           
public class PowerAdapter implements DC5 {

   private AC220 ac220;

    public PowerAdapter(AC220 ac220) {
        this.ac220 = ac220;
    }

    public int outoupDC5V() {
        int adapterInput = ac220.outputAC220V();
        int adapterOutput = adapterInput / 44;
        System.out.println("使用PowerAdapter輸入AC:" + adapterInput + "V,輸出DC:" + adapterOutput + "V");
        return adapterOutput;
    }
}
           
public class PowerAdapterTest {
    public static void main(String[] args) {
        DC5 dc5 = new PowerAdapter(new AC220());
        dc5.outoupDC5V();
    }
}