Java设计模式之适配器模式

适配器模式有三种:类适配器,对象适配器,接口适配器。

1.类适配器

  原理:通过继承来实现适配器的功能。

  例子:手中现在有ps2插头的设备,但是主机上只有usb的接口。这个时候就需要搞一个转换器,将ps2插头转换为usb插头就可以使用啦。

    Usb:描述Usb接口格式。

    UsbImpl:接口Usb的实现类,是具体的Usb接口格式。

    Ps2:描述Ps2接口格式。

    Ps2Adapter:用于将Ps2接口格式转换为Usb接口格式。

  代码实例如下:

/**
 * @Author long
 * @Date 2019/3/20 21:59
 */
public interface Usb {

    void isUsb();
}
/**
 * @Author long
 * @Date 2019/3/20 21:59
 */
public class UsbImpl implements Usb {

    @Override
    public void isUsb() {
        System.out.println("这个是usb接口");
    }
}
/**
 * @Author long
 * @Date 2019/3/20 22:01
 */
public interface Ps2 {

    void isPs2();
}
/**
 * @Author long
 * @Date 2019/3/20 22:02
 */
public class Ps2Adapter extends UsbImpl implements Ps2 {

    @Override
    public void isPs2() {
        isUsb();
    }
}
/**
 * @Author long
 * @Date 2019/3/20 21:58
 */
public class Client {

    public static void main(String[] args) {
        Ps2 ps2 = new Ps2Adapter();
        ps2.isPs2();
    }
}

2.对象适配器

  原理:通过组合来实现适配器的功能。

    例子:手中现在有ps2插头的设备,但是主机上只有usb的接口。这个时候就需要搞一个转换器,将ps2插头转换为usb插头就可以使用啦。

    Usb:描述Usb接口格式。

    UsbImpl:接口Usb的实现类,是具体的Usb接口格式。

    Ps2:描述Ps2接口格式。

    Ps2Adapter:用于将Ps2接口格式转换为Usb接口格式。

    代码实例如下:

/**
 * @Author long
 * @Date 2019/3/20 22:18
 * 描述Usb接口格式
 */
public interface Usb {

    void isUsb();
}
/**
 * @Author long
 * @Date 2019/3/20 22:19
 */
public class UsbImpl implements Usb {

    @Override
    public void isUsb() {
        System.out.println("我是Usb接口");
    }
}
/**
 * @Author long
 * @Date 2019/3/20 22:20
 */
public interface Ps2 {
    void isPs2();
}
/**
 * @Author long
 * @Date 2019/3/20 22:20
 */
public class Ps2Adapter implements Ps2 {

    private Usb usb;

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

    @Override
    public void isPs2() {
        usb.isUsb();
    }
}
/**
 * @Author long
 * @Date 2019/3/20 22:17
 */
public class Client {
    public static void main(String[] args) {

        Ps2 ps2 = new Ps2Adapter(new UsbImpl());
        ps2.isPs2();
    }
}

 

 

 

posted @ 2019-03-20 22:24  kafebabe  阅读(113)  评论(0编辑  收藏  举报