Java软件设计模式之适配器模式详解

 更新时间:2023年07月20日 09:34:35   作者:王雀跃  
这篇文章主要介绍了Java软件设计模式之适配器模式详解,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系,需要的朋友可以参考下

适配器模式

1、原理

适配器模式是一种结构型设计模式。适配器模式的思想是:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作

2、角色分析

适配器模式涉及3个角色:

源(Adaptee):需要被适配的对象或类型,相当于插头。适配器(Adapter):连接目标和源的中间对象,相当于插头转换器。目标(Target):期待得到的目标,相当于插座。

3、优缺点

适配器形式

适配器模式包括3种形式:类适配器模式、对象适配器模式、接口适配器模式(或又称作缺省适配器模式)。

一、类适配器

代码:

Adaptee

package oopdemo01.Design_pattern.adapter;
// 要被适配的类:网线
public class Adaptee {
    public void request() {
        System.out.println("连接网线上网");
    }
}

Adapter(此处继承Adaptee)

package oopdemo01.Design_pattern.adapter;
// 1.继承 (类适配器,单继承)
// 真正的适配器,需要连接usb,连接网线
public class Adapter extends Adaptee implements NetToUsb {
    @Override
    public void handleRequest() {
        super.request(); // 可以上网了
    }
}

NetToUsb

package oopdemo01.Design_pattern.adapter;
// 接口转换器的抽象实现
public interface NetToUsb {
    // 作用:处理请求,网线=>usb
    public void handleRequest();
}

Computer

package oopdemo01.Design_pattern.adapter;
// 客户端类:想上网,插不上网线
public class Computer {
    // 我们的电脑需要连接上转接器才可以上网
    public void net(NetToUsb adapter) {
        // 上网的具体实现,找一个转接头
        adapter.handleRequest();
    }
    public static void main(String[] args) {
        // 电脑 适配器 网线
        Computer computer = new Computer(); // 电脑
        Adaptee adaptee = new Adaptee();    // 网线
        Adapter adapter = new Adapter();    // 转接器
        computer.net(adapter);
    }
}

控制台输出结果:

二、对象适配器

Adapter2(此处的Adaptee是一个属性)

package oopdemo01.Design_pattern.adapter;
// 2.组合 (对象适配器:更常用)
// 真正的适配器,需要连接usb,连接网线
public class Adapter2 implements NetToUsb {
    private Adaptee adaptee;
    public Adapter2(Adaptee adaptee) {
        this.adaptee = adaptee;
    }
    @Override
    public void handleRequest() {
        adaptee.request(); // 可以上网了
    }
}

Computer

package oopdemo01.Design_pattern.adapter;
// 客户端类:想上网,插不上网线
public class Computer {
    // 我们的电脑需要连接上转接器才可以上网
    public void net(NetToUsb adapter) {
        // 上网的具体实现,找一个转接头
        adapter.handleRequest();
    }
    public static void main(String[] args) {
        // 电脑 适配器 网线
        Computer computer = new Computer(); // 电脑
        Adaptee adaptee = new Adaptee();    // 网线
        Adapter2 adapter2 = new Adapter2(adaptee);    // 转接器
        computer.net(adapter2);
    }
}

控制台输出结果:

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

相关文章

  • springboot集成Deepseek4j的项目实践

    springboot集成Deepseek4j的项目实践

    本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • java商城项目实战之购物车功能实现

    java商城项目实战之购物车功能实现

    这篇文章主要为大家详细介绍了java商城项目实战之购物车功能实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Springboot各版本与Java JDK的对应版本梳理

    Springboot各版本与Java JDK的对应版本梳理

    本文介绍了SpringBoot各版本支持的JavaJDK版本,SpringBoot2.5.x支持JDK8、11、17,2.4.x支持JDK8、11、15等,商用JDK如OracleJDK、IBMJDK、AzulZuluEnterprise等包含额外功能,适用于企业级应用
    2026-04-04
  • Apache Maven3.6.0的下载安装和环境配置(图文教程)

    Apache Maven3.6.0的下载安装和环境配置(图文教程)

    本文主要介绍了Apache Maven3.6.0的下载安装和环境配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • RabbitMQ消费者限流实现消息处理优化

    RabbitMQ消费者限流实现消息处理优化

    这篇文章主要介绍了RabbitMQ消费者限流实现消息处理优化,消费者限流是用于消费者每次获取消息时限制条数,注意前提是手动确认模式,并且在手动确认后才能获取到消息,感兴趣想要详细了解可以参考下文
    2023-05-05
  • Spring中一个少见的引介增强IntroductionAdvisor

    Spring中一个少见的引介增强IntroductionAdvisor

    这篇文章主要为大家介绍了Spring中一个少见的引介增强IntroductionAdvisor实战详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • java导出Excel(非模板)可导出多个sheet方式

    java导出Excel(非模板)可导出多个sheet方式

    Java开发中,导出Excel是常见需求,有时需要支持多个Sheet导出,此技巧介绍非模板方式实现单标题单Sheet以及多Sheet导出,标题一致或不一致均可,可换成Map使用,适合个人开发者和需要Excel导出功能的场景
    2024-09-09
  • 快速了解JAVA垃圾回收机制

    快速了解JAVA垃圾回收机制

    这篇文章主要介绍了有关Java垃圾回收机制的知识,文中实例简单易懂,方便大家更好的学习,有兴趣的朋友可以了解下
    2020-06-06
  • springboot log4j2日志框架整合与使用过程解析

    springboot log4j2日志框架整合与使用过程解析

    这篇文章主要介绍了springboot log4j2日志框架整合与使用,包括引入maven依赖和添加配置文件log4j2-spring.xml的相关知识,需要的朋友可以参考下
    2022-05-05
  • Java 十大排序算法之计数排序刨析

    Java 十大排序算法之计数排序刨析

    计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法
    2021-11-11

最新评论