当前位置: 首页 > news >正文

Java设计模式之适配器模式

        适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

        这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

一、先模拟计算机读取SD卡:

1、先创建一个SD卡的接口:

public interface SDCard {//读取SD卡方法String readSD();//写入SD卡功能int writeSD(String msg);
}

2、创建SD卡接口的实现类,模拟SD卡的功能:

public class SDCardImpl implements SDCard {@Override    public String readSD() {String msg = "sdcard read a msg :hello word SD";return msg;  }@Override  public int writeSD(String msg) {      System.out.println("sd card write msg : " + msg);    return 1;   }
}

3、创建计算机接口,计算机提供读取SD卡方法:

public interface Computer {    String readSD(SDCard sdCard);
}

4、创建一个计算机实例,实现计算机接口,并实现其读取SD卡方法:

public class ThinkpadComputer implements Computer {@Override    public String readSD(SDCard sdCard) {        if(sdCard == null)throw new NullPointerException("sd card null");        return sdCard.readSD();    }
}

5、这时候就可以模拟计算机读取SD卡功能:

public class ComputerReadDemo {    public static void main(String[] args) {        Computer computer = new ThinkpadComputer();        SDCard sdCard = new SDCardImpl();       System.out.println(computer.readSD(sdCard));    }
}

二、接下来在不改变计算机读取SD卡接口的情况下,通过适配器模式读取TF卡:

1、创建TF卡接口:

public interface TFCard {    String readTF();    int writeTF(String msg);
}

2、创建TF卡实例:

public class TFCardImpl implements TFCard {    @Override    public String readTF() {        String msg ="tf card reade msg : hello word tf card";        return msg;    }    @Override    public int writeTF(String msg) {        System.out.println("tf card write a msg : " + msg);        return 1;    }
}

3、创建SD适配TF (也可以说是SD兼容TF,相当于读卡器):

实现SDCard接口,并将要适配的对象作为适配器的属性引入。

public class SDAdapterTF implements SDCard {    private TFCard tfCard;    public SDAdapterTF(TFCard tfCard) {        this.tfCard = tfCard;    }    @Override    public String readSD() {        System.out.println("adapter read tf card ");        return tfCard.readTF();    }    @Override    public int writeSD(String msg) {        System.out.println("adapter write tf card");        return tfCard.writeTF(msg);    }
}

4、通过上面的例子测试计算机通过SD读卡器读取TF卡:

public class ComputerReadDemo {    public static void main(String[] args) {        Computer computer = new ThinkpadComputer();        SDCard sdCard = new SDCardImpl();        System.out.println(computer.readSD(sdCard));        System.out.println("====================================");        TFCard tfCard = new TFCardImpl();        SDCard tfCardAdapterSD = new SDAdapterTF(tfCard);        System.out.println(computer.readSD(tfCardAdapterSD));    }
}

输出:

sdcard read a msg :hello word SD
====================================
adapter read tf card 
tf card reade msg : hello word tf card

在这种模式下,计算机并不需要知道具体是什么卡,只需要负责操作接口即可,具体操作的什么类,由适配器决定。

        适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。适配器模式主要用于解决两个不兼容接口之间的兼容性问题。

        在适配器模式中,适配器类作为一个中间层,将客户端对目标接口的请求转化为被适配者的方法调用。适配器可以通过继承或者组合被适配者类来实现。

        适配器模式可以帮助客户端与不兼容的接口进行交互,而无需修改客户端代码或被适配者的代码。这样可以提高代码的复用性和灵活性。

        适配器模式在实际应用中经常用于集成已有系统、库或第三方组件,以实现系统间的互操作性。它可以将新旧系统进行无缝对接,并且可以随时切换适配器以适应不同的接口变化。

http://www.lryc.cn/news/155203.html

相关文章:

  • 每天一个工业通信协议(3)2023.8.29 (DAP接口)
  • 如何将Word转成PDF?试一下这个转换方法
  • 成都睿趣科技:现在开一家抖音小店还来得及吗
  • 原型链中:为什么Function.proto==Function.prototype?
  • 原生js实现轮播图及无缝滚动
  • MP中的字段还可以利用函数来查询拼接sql
  • 【python爬虫】中央气象局预报—静态网页图像爬取练习
  • 数字孪生城市总体架构进一步迭代更新
  • 通过 Jetbrains GateWay实现Remote Development
  • springboot 集成 lucene
  • Android开机动画
  • vue中使用wow.js
  • 网站edge -- 油猴 -> IDM
  • Android片段
  • iOS实时监控与报警器
  • Git小白入门——上手实操之创建仓库和代码提交
  • JS数组迭代方法实操
  • 基于snat+dnat发布内网K8S及Jenkins+gitlab+Harbor模拟CI/CD的综合项目
  • 时序预测 | MATLAB实现PSO-LSSVM粒子群算法优化最小二乘支持向量机时间序列预测未来
  • java IO流(二) 字符流 缓冲流 原始流与缓冲流性能分析
  • 复现XSS漏洞及分析
  • Vue组件之间传值
  • windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)
  • Weblogic SSRF【漏洞复现】
  • 文件读取漏洞复现(Metinfo 6.0.0)
  • 【工程实践】使用git clone 批量下载huggingface模型文件
  • 2020 杭电多校第三场 H Triangle Collision(反射套路 + 绕点旋转 + 矢量
  • Servlet属性、监听者和会话
  • Gin学习记录2——路由
  • 《计算机算法设计与分析》第一章:算法概述