介绍
适配器模式非常简单,他常用于新系统对接老系统或者多个第三方系统的接口。所以,一般在新开发的系统中,是很少使用适配器模式。
下面我模拟一下,新系统对接2个第三方系统的场景。需要注意下面的不同:
- 系统01的connect方法的端口port需要的是String类型。
- 系统02的连接和断开方法,使用的是open()和close()。
为了让系统和系统01、系统02都能对接上,我们此时需要使用适配器模式。
UML图
代码
老系统
- 系统01
public class DeviceAdapter01 implements Target {
private DeviceSystem01 deviceSystem01 = null;
public DeviceAdapter01(){
deviceSystem01 = new DeviceSystem01();
}
@Override
public void connect(String ip, short port) {
deviceSystem01.connect(ip,String.valueOf(port));
}
@Override
public void operation() {
deviceSystem01.operation();
}
@Override
public void disConnect() {
deviceSystem01.disConnect();
}
}
- 系统02
public class DeviceSystem02 {
public void open(String ip, short port) {
System.out.println("系统02连接成功");
}
public void operation() {
System.out.println("正在运行");
}
public void close() {
System.out.println("系统02连接断开");
}
}
适配器
- Target接口
public interface Target {
void connect(String ip,short port);
void operation();
void disConnect();
}
- 满足系统01的适配器
public class DeviceAdapter01 implements Target {
private DeviceSystem01 deviceSystem01 = null;
public DeviceAdapter01(){
deviceSystem01 = new DeviceSystem01();
}
@Override
public void connect(String ip, short port) {
deviceSystem01.connect(ip,String.valueOf(port));
}
@Override
public void operation() {
deviceSystem01.operation();
}
@Override
public void disConnect() {
deviceSystem01.disConnect();
}
}
- 满足系统02的适配器
public class DeviceAdapter02 implements Target {
private DeviceSystem02 deviceSystem02 = null;
public DeviceAdapter02(){
deviceSystem02 = new DeviceSystem02();
}
@Override
public void connect(String ip, short port) {
deviceSystem02.open(ip, port);
}
@Override
public void operation() {
deviceSystem02.operation();
}
@Override
public void disConnect() {
deviceSystem02.close();
}
}
- 调用方法的类 Client
public class Client {
public static void main(String[] args) {
Target target = new DeviceAdapter02();//如果我们想要缓存系统01,只需改动这里即可
target.connect("192.168.2.58",(short)8080);
target.operation();
target.disConnect();
}
}
总结
- 我们在系统开发中,如果可以避免使用适配器模式,尽量避免使用适配器,因为他是在为了对接不方便修改的旧系统或者不能修改的第三方系统的时候使用的。
- 适配器模式也可是使用在为了让多个第三方系统的接口一致,它方便了上层调用代码时接口。