介面卡模式(類介面卡 物件介面卡)

烈如歌歌發表於2020-12-05

做個筆記

引用 https://blog.csdn.net/weixin_40834464/article/details/82958187

public interface Usb {

    public void getUsb();
}

public interface Psp {
    public void getPsp();
}

public class Usber implements Usb {
    @Override
    public void getUsb() {
        System.out.println("usb介面");
    }
}

/**
 * 類介面卡 psp適用usb介面
 */
public class UsbAdapter extends Usber implements Psp{
    @Override
    public void getPsp() {
//        System.out.println("psp介面");
        super.getUsb();
    }
}


/**
 * 物件介面卡 psp適用usb介面
 */
public class UsbObjectAdapter implements Psp{

    private Usber usb;

    public UsbObjectAdapter(Usber usber){
        this.usb = usber;
    }

    @Override
    public void getPsp() {
        usb.getUsb();
    }
}

/**
 * 類介面卡
 *
 * 1.usb介面   psp介面  兩個介面方法不能互相實用
 * 2.usb介面實現類 Usber
 * 3.Usber 不能直接實用psp得方法
 * 4.介面卡類AdapterTest 繼承 Usber 實現psp介面
 *可以發現,我們呼叫的是Ps2的介面方法,返回的是Usb口,達到了適配的目的
 *
 * 類介面卡與物件介面卡的使用場景一致,僅僅是實現手段稍有區別,二者主要用於如下場景:
 *  (1)想要使用一個已經存在的類,但是它卻不符合現有的介面規範,導致無法直接去訪問,這時建立一個介面卡就能間接去訪問這個類中的方法
 *  (2)我們有一個類,想將其設計為可重用的類(可被多處訪問),我們可以建立介面卡來將這個類來適配其他沒有提供合適介面的類
 *
 *
 * 物件介面卡
 * 類實現Psp得介面  (UsbObjectAdapter介面卡實現被適配psp得介面)
 * 構造方法獲取標準得物件
 *
 *
 *目的是要Psp 去 適配 Usb得介面方法     通俗點就是 Psp要執行usb方法 改寫psp方法
 */
public class AdapterTest {
    public static void main(String[] args) {
//        UsbAdapter usbAdapter = new UsbAdapter();
//        usbAdapter.getPsp();

        //類介面卡 測試方法
        //可以發現,我們呼叫的是Psp的介面方法,返回的是Usb口,達到了適配的目的
//        Psp psp = new UsbAdapter();
//        psp.getPsp();


        //物件介面卡 測試方法
        Usber usber = new Usber();
        new UsbObjectAdapter(usber).getPsp();
    }
}

 

相關文章