Java设计模式之适配器模式的示例详解

 更新时间:2022年08月27日 15:21:49   作者:niuyongzhi  
适配器模式,即将某个类的接口转换成客户端期望的另一个接口的表示,主要目的是实现兼容性,让原本因为接口不匹配,没办法一起工作的两个类,可以协同工作。本文将通过示例详细介绍适配器模式,需要的可以参考一下

1.什么是适配器模式

将一个类的接口转换成为客户希望的另外一个类的接口。适配器(Adapter)模式是的原本由于接口不兼容而不能在一起工作的类,可以一起工作。

比如,小米充电器,可以给小米手机充电,目前,想让苹果充电器给小米手机充电。如何完成,这时候需要一个适配器,将小米充电器和苹果充电器连在一起。

2.如何实现

1)目标接口,该接口是客户想要使用的接口(苹果充电器)

2)被适配者,是一个已经存在的接口或抽象类。(小米充电器)

3)适配器,是一个类,该类实现了目标接口,并包含被适配者的引用。

适配器的职责是对被适配者接口(抽象类)与目标接口进行适配

3.代码实现

1)目标接口

/**
 * 目标接口,苹果充电器
 */
public interface AppleCharger {
    public void appleCharger();
}

2)被适配者

/**
 *被适配者,小米充电器
 */
public interface MiCharger {
    public void miCharger();
}

3)小米手机使用小米充电器进行充电

/**
 *小米手机,实现小米充电器接口,可以充电
 */
public class MiPhone implements MiCharger {
    @Override
    public void miCharger() {
        charging();
    }
    public void charging(){
        System.out.println("MiPhone charging.....");
    }
}

4)适配器。需要调用苹果充电器的方法给小米手机充电。

该类实现了目标接口(AppleChager),并包含被适配者引用(MiCharger)

/**
 * 适配器,
 * 该类实现目标接口AppleCharge,并包含被适配者(MiCharger)的引用
 */
public class AppleAdapter implements AppleCharger {
    MiCharger charge;
    public AppleAdapter(MiCharger b){
        this.charge = b;
    }
    /**
     * 调用苹果充电器的方法
     */
    @Override
    public void appleCharger() {
        //给使用小米充电器的设备充电
        charge.miCharger();
    }
}

5)测试类

public class TestMain {
    public static void main(String args []){
        AppleAdapter adapter = new AppleAdapter(new MiPhone());
        adapter.appleCharger();//调用苹果充电器,给小米手机充电
    }
}

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

相关文章

  • 基于JavaMail实现简单邮件发送

    基于JavaMail实现简单邮件发送

    这篇文章主要为大家详细介绍了基于JavaMail实现简单邮件发送,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java NIO Selector用法详解【含多人聊天室实例】

    Java NIO Selector用法详解【含多人聊天室实例】

    这篇文章主要介绍了Java NIO Selector用法,结合实例形式分析了Java NIO Selector基本功能、原理与使用方法,并结合了多人聊天室实例加以详细说明,需要的朋友可以参考下
    2019-11-11
  • MySQL主键约束和外键约束的实现

    MySQL主键约束和外键约束的实现

    在MySQL中,主键和外键约束是通过约束来实现的,本文主要介绍了MySQL主键约束和外键约束的实现, 具有一定的参考价值,感兴趣的可以了解下
    2023-11-11
  • 解决springmvc使用@PathVariable路径匹配问题

    解决springmvc使用@PathVariable路径匹配问题

    这篇文章主要介绍了解决springmvc使用@PathVariable路径匹配问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 一文带你彻底搞懂Lambda表达式

    一文带你彻底搞懂Lambda表达式

    这篇文章主要介绍了一文带你彻底搞懂Lambda表达式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 归并排序的原理及java代码实现

    归并排序的原理及java代码实现

    归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。递归形式的算法在形式上较简洁,但实用性很差。一般情况下,很少利用二路归并排序法进行内部排序。
    2016-02-02
  • 浅析Java中静态代理和动态代理的应用与区别

    浅析Java中静态代理和动态代理的应用与区别

    代理模式在我们生活中很常见,而Java中常用的两个的代理模式就是动态代理与静态代理,这篇文章主要为大家介绍了二者的应用与区别,需要的可以参考下
    2023-08-08
  • RocketMQ Broker实现高可用高并发的消息中转服务

    RocketMQ Broker实现高可用高并发的消息中转服务

    RocketMQ消息代理(Broker)是一种高可用、高并发的消息中转服务,能够接收并存储生产者发送的消息,并将消息发送给消费者。它具有多种消息存储模式和消息传递模式,支持水平扩展和故障转移等特性,可以为分布式应用提供可靠的消息传递服务
    2023-04-04
  • 详解Java中CountDownLatch异步转同步工具类

    详解Java中CountDownLatch异步转同步工具类

    今天给大家带来的是关于Java的相关知识,文章围绕着CountDownLatch异步转同步工具类展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • SpringBoot基于SpringSecurity表单登录和权限验证的示例

    SpringBoot基于SpringSecurity表单登录和权限验证的示例

    这篇文章主要介绍了SpringBoot基于SpringSecurity表单登录和权限验证的示例。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论