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(); } }