天天看點

擴充卡模式--類的擴充卡,對象擴充卡

擴充卡解決了 當我們想用某一方法時該方法不符合我們的引用規則, 此時可以使用類擴充卡或對象擴充卡:

問題場景:

我有一個Usb口的鍵盤,但電腦上隻有midi口,怎麼解決接口不比對的問題呢?

解決方式:擴充卡

類擴充卡:

Midi接口

public interface Midi {

    void connectHost();

}
           

Usb 接口

public interface Usb {

    void connectKeyBoard();

}
           
public class UsbImpl implements Usb{

    @Override

    public void connectKeyBoard() {

         System.out.println("異常牛逼的的Usb連接配接了鍵盤,可以悄悄了");

    }

}
           

擴充卡

public class Adapter extends UsbImpl implements Midi{

    @Override

    public void connectHost() {

         connectKeyBoard();

    }

}

           

擴充卡使用

public class TestMain {

    public static void main(String[] args) {

         //這裡Midi 的引用指向了子類Adapter的執行個體,子類重寫了Midi的方法,并在方法中調用Usb的方法

         Midi mi = new Adapter();

         mi.connectHost();

    }

}
           

對象擴充卡:

Midi接口

public interface Midi {

    void connectHost();

}
           

Usb 接口

public interface Usb {

    void connectKeyBoard();

}
           

擴充卡

public class Adapter implements Midi{

    private Usb usb;

    

    public Adapter(Usb usb) {

         super();

         this.usb = usb;

    }

    @Override

    public void connectHost() {

         usb.connectKeyBoard();

    }

}
           

擴充卡使用

public class TestMain {

    public static void main(String[] args) {

         Midi mi = new Adapter(new UsbImpl()); //構造傳參

         mi.connectHost();

    }

}