设计模式-适配器模式

1、简单介绍

适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。适配器模式有两种:“对象”适配器和“类”适配器。
适配器

2、适配器模式组成结构

  • 客户 (Client):客户类。
  • 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
  • 适配者(Adaptee):需要适配的类或适配者类。
  • 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

3、“类”适配器案例(usb和typec的案例)

1)Usb接口类
public interface Usb {
    void isUsb();
}
2)实现Usb接口
public class UsbImpl implements Usb {
    @Override
    public void isUsb() {
        System.out.println("使用usb");
    }
}
3)typec接口类
public interface Typec {

    void isTypec();

}
4)typec要使用usb的适配器
public class Adapter extends UsbImpl implements Typec {

    @Override
    public void isTypec() {
        isUsb();
    }

 

}
5)测试
   public static void main(String[] args) {
        Typec typec = new Adapter();
        typec.isTypec();//输出使用usb"
    }

4、“对象”适配器

1)其他的都不变,我们更改适配器方式
public class Adapter implements Typec {
    private Usb usb;

    public Adapter(Usb usb) {
        this.usb = usb;
    }

    @Override
    public void isTypec() {
        usb.isUsb();
    }
}
2)测试
public static void main(String[] args) {
        Typec p = new Adapter(new UsbImpl());
        p.isTypec();// 结果:USB口
    }

5、适配器模式总结

  • 适配器将一个对象包装起来用以改变其接口。
  • 当需要使用一个现有的类而其接口并不符合你的需求时,可以使用适配器。
  • 实现一个适配器可能会花一番功夫,可能也会毫不费力,原因是有其目标接口的大小与复杂度决定。
  • 适配器模式有两种形式:“类”适配器与“对象适配器”,类适配器需要使用到多重继承,所以在 Java 中并不适用

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.fengpt.cn/archives/设计模式-适配器模式