23种设计模式:11适配器模式

介绍

适配器模式非常简单,他常用于新系统对接老系统或者多个第三方系统的接口。所以,一般在新开发的系统中,是很少使用适配器模式。
下面我模拟一下,新系统对接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();
    }
}

总结

  • 我们在系统开发中,如果可以避免使用适配器模式,尽量避免使用适配器,因为他是在为了对接不方便修改的旧系统或者不能修改的第三方系统的时候使用的。
  • 适配器模式也可是使用在为了让多个第三方系统的接口一致,它方便了上层调用代码时接口。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值