Java设计模式之适配器模式的实现

 更新时间:2023年11月30日 09:58:25   作者:啊几  
这篇文章主要介绍了Java设计模式之适配器模式的实现,适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能,需要的朋友可以参考下

前言

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

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。

适配器的实现方式

适配器可以继承或依赖已有的对象,然后实现想要的目标接口。

示例

生活中有一个实例就是,笔记本上想要插内存卡就必须借助读卡器,读卡器就是笔记本usb接口和内部卡接口之间的适配器。

将内存卡插入读卡器,再将读卡器插入笔记本,就能实现用笔记本读取内存卡了。

继承实现

usb接口

public interface UsbInterface {
    public void read();
}

内存卡类

public class MemoryCard {
    public void readCard(){
        System.out.println("读取内存卡");
    }
}

电脑类

public class Computer {

    public void readCard(UsbInterface usb){
        usb.read();
    }
}

电脑依赖使用Usb接口,想要使用内存卡,就必须要有一个适配器读卡器

读卡器适配器类

public class CardReaderAdapter extends MemoryCard implements UsbInterface{
    @Override
    public void read() {
        readCard();
    }
}

这里使用的是继承方式,继承了内存卡类

客户端类

public class Client {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.readCard(new CardReaderAdapter());
    }
}

使用继承暴露了所有被适配类的方法,增大了耦合性,建议使用有依赖聚合的方式

依赖实现

依赖实现的适配器

public class CardReaderAdapter implements UsbInterface {
    
    private MemoryCard card;
    CardReaderAdapter(MemoryCard card){
        this.card = card;
    }
    @Override
    public void read() {
        card.readCard();
    }
}

在Spring源码中的使用

在Spring源码中的转化服务GenericConversionService就使用到了适配器模式

在这里插入图片描述

在这里插入图片描述

addConverter(GenericConverter converter)方法需要依赖使用GenericConverter类,但是只有Converter对象,这时就需要一个适配器进行适配。

在这里插入图片描述

在这里插入图片描述

可以看到ConverterAdapter适配器实现了GenericConverter接口,并且聚合了Converter对象。这里就使用到了适配器模式。

到此这篇关于Java设计模式之适配器模式的实现的文章就介绍到这了,更多相关Java适配器模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用Maven插件生成Mybatis代码的实现方法

    用Maven插件生成Mybatis代码的实现方法

    本文主要介绍 Maven插件生成Mybatis代码,现在做开发的朋友有好多用Maven 来管理代码,这里给大家举个例子,有需要的同学可以看下
    2016-07-07
  • java中对象和Map互相转换的几种常见方式举例

    java中对象和Map互相转换的几种常见方式举例

    Map在日常开发应用中的频率很高,最常用的实现类是HashMap和有序的TreeMap,下面这篇文章主要给大家介绍了关于java中对象和Map互相转换的几种常见方式举例,需要的朋友可以参考下
    2024-01-01
  • 深入剖析Java中Map.Entry的方法与实战应用

    深入剖析Java中Map.Entry的方法与实战应用

    在Java集合框架中,Map.Entry扮演着连接键值对的桥梁角色,作为Map接口的内部接口,它封装了键值对的本质,是高效处理映射数据的核心工具,下面我我们就来深入剖析Map.Entry的概念,方法及实战应用
    2025-06-06
  • SpringBoot通过URL地址获取文件的多种方式

    SpringBoot通过URL地址获取文件的多种方式

    本文介绍了多种在SpringBoot中通过URL地址获取文件的方法,包括Java原生、RestTemplate、WebClient等,并提供了详细的步骤和示例代码,同时,还讨论了异常处理、资源清理、并发控制等优化建议,需要的朋友可以参考下
    2026-01-01
  • Springboot集成CSRF防攻击过程

    Springboot集成CSRF防攻击过程

    本文介绍了Springboot集成CSRF防攻击的方法,通过设置域名或路径白名单来过滤未知链接,从而达到防护目的,主要涉及两个类:CSRFFilterConfigUtils防护配置工具类和CsrfFilter防护过滤类
    2025-11-11
  • springboot使用Thymeleaf报错常见的几种解决方案

    springboot使用Thymeleaf报错常见的几种解决方案

    这篇文章主要介绍了springboot使用Thymeleaf报错常见的几种解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java并发编程中的Callable、Future和FutureTask详解

    Java并发编程中的Callable、Future和FutureTask详解

    这篇文章主要介绍了Java并发编程中的Callable、Future和FutureTask详解,创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口,这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果,需要的朋友可以参考下
    2023-07-07
  • Java遍历Map的5种方式实例

    Java遍历Map的5种方式实例

    Map作为Java中的一种集合,以键值对的形式存放一批数据,经常会被我们应用在项目中,下面这篇文章主要给大家介绍了关于Java遍历Map的5种方式,需要的朋友可以参考下
    2023-02-02
  • Java实现一键生成PDF文件并插入文字/选项/签名及公章

    Java实现一键生成PDF文件并插入文字/选项/签名及公章

    这篇文章将从底层原理到实战技巧,为大家详细介绍一下如何用Java实现一键生成PDF文件、插入文字、选项、签名及公章,需要的小伙伴可以了解下
    2025-08-08
  • 一文搞懂Java设计模式之责任链模式

    一文搞懂Java设计模式之责任链模式

    这篇文章主要给大家介绍了关于Java设计模式之责任链模式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论