适配器模式

适配器

使用已有类 但接口与其它代码不兼容时 使用该模式

重用几个子类 但子类缺少一些不能添加到父类中的公共功能时 使用该模式

 

 

 对象适配器(使用组合)

// 手机usb接口
public interface UsbPhone {
    String getName();
}

--------
// 电脑usb接口
public class UsbCom {
    public String getName(){
        return "电脑USB";
    }
}
// 对象适配器 使用组合
public class UsbTransition implements UsbPhone{
    private UsbCom usbCom;
    public UsbTransition(UsbCom usbCom){
        this.usbCom = usbCom;
    }
    @Override
    public String getName() {
        String name = usbCom.getName();
        return "手机USB";
    }
}
   public static void main(String[] args) {
        // 需要转换的类
        UsbCom usbCom = new UsbCom();
        // 转换类
        UsbTransition usbTransition = new UsbTransition(usbCom);
        String name = usbTransition.getName();
  }

 

 

  类适配器(使用继承)

   

// 类的适配器 使用继承
public class UsbAdpater extends  UsbCom implements UsbPhone{
    @Override
    public String getName() {
        return "手机usb";
    }
}

 

 类适配器的弊端

  新增方法

 

// 电脑USB
public class UsbCom {
    public String getName(){
        return "电脑USB";
    }
    public String playCode(){
        return "敲代码";
    }
}
  public static void main(String[] args) {
        UsbAdpater usbAdpater = new UsbAdpater();
        usbAdpater.playCode();
    }

手机不能敲代码 手机会继承电脑的所有方法 所有不适合

 

posted @ 2020-03-18 18:13  辰梓悦  阅读(116)  评论(0编辑  收藏  举报