适配器模式--类的适配器,对象适配器

适配器解决了 当我们想用某一方法时该方法不符合我们的引用规则, 此时可以使用类适配器或对象适配器:

问题场景:

我有一个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();

    }

}

 

你可能感兴趣的:(java,基础知识)