适配器解决了 当我们想用某一方法时该方法不符合我们的引用规则, 此时可以使用类适配器或对象适配器:
问题场景:
我有一个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();
}
}