设计模式-适配器模式 Java

Java设计模式之<适配器模式>  java的设计模式可分为:创建型模式、结构性模式、行为型模式三类。适配器模式(Adapter Pattern)是一种 结构型设计模式,用于在两个不兼容的接口之间建立桥梁,使它们可以协同工作。它通常用于让已有的类与新接口兼容,而无需修改原有代码。实现方式分为对象适配器(基于组合)、类适配器(基于继承)、接口适配器(基于抽象类)三种。 阅读详情

模式概述

适配器模式(Adapter Pattern)是一种常用的结构型设计模式,它通过转换接口解决不同组件之间的兼容性问题,让原本不兼容的接口能够协同工作。

简单代码示例

场景描述:假设我们需要将第三方支付SDK(仅支持美元支付)集成到支持人民币支付的系统中

1. 类适配器实现(继承方式)

// 目标接口:人民币支付
interface RmbPayment {
    void payInRmb(double amount);
}

// 适配者类:美元支付SDK
class UsdPaymentSdk {
    void payInUsd(double amount) {
        System.out.println("Paid $" + amount + " via USD SDK");
    }
}

// 类适配器(继承)
class PaymentClassAdapter extends UsdPaymentSdk implements RmbPayment {
    private static final double EXCHANGE_RATE = 6.5;

    @Override
    public void payInRmb(double rmbAmount) {
        double usdAmount = rmbAmount / EXCHANGE_RATE;
        super.payInUsd(usdAmount);  // 调用父类方法
    }
}

// 客户端调用
public class Client {
    public static void main(String[] args) {
        RmbPayment payment = new PaymentClassAdapter();
        payment.payInRmb(650);  // 支付650人民币
    }
}

2. 对象适配器实现(组合方式)

// 对象适配器(组合)
class PaymentObjectAdapter implements RmbPayment {
    private final UsdPaymentSdk usdPayment;
    private static final double EXCHANGE_RATE = 6.5;

    public PaymentObjectAdapter(UsdPaymentSdk usdPayment) {
        this.usdPayment = usdPayment;
    }

    @Override
    public void payInRmb(double rmbAmount) {
        double usdAmount = rmbAmount / EXCHANGE_RATE;
        usdPayment.payInUsd(usdAmount);  // 委托给被适配对象
    }
}

// 客户端调用
public class Client {
    public static void main(String[] args) {
        UsdPaymentSdk sdk = new UsdPaymentSdk();
        RmbPayment payment = new PaymentObjectAdapter(sdk);
        payment.payInRmb(650);  // 支付650人民币
    }
}

技术细节

1.模式组成

组件职责说明
目标接口客户端期望的接口
适配者类需要被适配的现存组件
适配器转换接口的中间件

2.两种实现方式

  • 类适配器:通过继承实现
  • 对象适配器:通过组合实现

模式应用

Spring MVC中的HandlerAdapter
核心作用:统一处理不同类型的Controller

// 简化版HandlerAdapter接口
public interface HandlerAdapter {
    ModelAndView handle(HttpServletRequest request, 
                       HttpServletResponse response, 
                       Object handler) throws Exception;
}

// 注解控制器适配器
public class AnnotationMethodHandlerAdapter implements HandlerAdapter {
    public ModelAndView handle(HttpServletRequest request,
                              HttpServletResponse response, 
                              Object handler) {
        // 将请求路由到@Controller注解的方法
        // 转换不同参数类型(@RequestParam, @RequestBody等)
    }
}

// 传统Controller适配器
public class SimpleControllerHandlerAdapter implements HandlerAdapter {
    public ModelAndView handle(HttpServletRequest request,
                              HttpServletResponse response, 
                              Object handler) {
        ((Controller) handler).handleRequest(request, response);
    }
}
  1. DispatcherServlet获取HandlerMapping返回的Controller
  2. 遍历HandlerAdapter列表,找到支持该Controller类型的适配器
  3. 调用适配器的handle()方法执行请求处理
【Java设计模式】Java设计模式之(十七)适配器模式(Adapter Pattern) 这种类型的设计模式属于结构型模式。 一、适配器模式介绍 1.1 含义 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。 我们通过下面的实例来演示适配器模式的使用。其中,音频播放器设备只能播放 mp3 文件,通 阅读详情

相关推荐

Allegro规则管理器实战:5步搞定Xnet等长组设置(含Relative Propagation Delay配置)

本文详细介绍了在Cadence Allegro规则管理器中,通过5个实战步骤高效设置Xnet等长组的方法。核心内容包括创建Xnet属性、定义引脚对、建立匹配组,并重点讲解了Relative Propagation Delay规则的配置与应用,帮助PCB设计师确保高速信号时序对齐,提升系统稳定性与性能。

weixin_29193259的博客 517

Java设计模式—适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)是一种结构型设计模式;用于将一个类的接口转换成另一个接口,从而满足客户端对接口的需求;在适配器模式中,适配器充当一个中间层,通过实现目标接口并持有原始类的实例来实现对原始类的封装和转换。客户端只需要调用目标接口中定义的方法即可完成对原始类的调用。适配器模式在Java中广泛应用于各种场景,例如,将旧版API适配到新版API、将不同的数据格式适配到统一的数据格式等。所以,适配器模式是个非常非常重要的,是个非常强的设计模式!

是个非常热爱生活、乐观、奋斗、努力的逗比青年 4067

Mac Pro M2芯片成功安装麒麟银河高级服务器虚拟机

本人用的是1、Macbook m2pro芯片 16G+5123、安装homebrew、wegt、qemu。

vagatable_XX的博客 3297

Java设计模式 八 适配器模式 (Adapter Pattern)

适配器模式是一种解决。

空 1090

vCenter Server出现no healthy upstream的解决方法

可以通过"VMware vCenter Server Management(服务)"来排查问题,在网页里面找到“服务”模块,会发现有很多服务没有启动起来,而且手动启动也无法启动。7.0 地址后,页面出现“no healthy upstream”,无法正常登录vCenter,重启后依旧如此,该故障的前提是没有对vCenter做过任何配置,如下图所示。于是用命令查询是否有证书过期,发现真有多个服务依赖的证书在当天早上过期。使用如下命令尝试打开服务发现不分服务可以打开,不分服务无法打开。

1万+

Ubuntu技巧-Ubuntu远程访问之SSH反向代理

💡大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、互联网和自媒体。要把内网的一台的Ubuntu服务器让外面也能访问,总共有三种可行的方案,前面已经介绍了两种方式,今天就来介绍更健壮稳定的方式——ssh反向代理。大概的框架图如下,今天就从服务器购买到设置,手把手的教程,让你花费100块以内,就拥有一个强大的「云服务器」。

可夫小子的频道 1151

adapter pattern java_Java设计模式之适配器模式(Adapter Pattern)

Java设计模式之适配器模式(Adapter Pattern),适配器模式是Java中的结构性模式的一种,最近详细的比较安卓中的Listview和RecycleView的区别,有一点很明显,就是RecycleView中就根本没有添加header和footer的方法,像这种方法也是我们平时常用的,那么只能自己封装了,参考了Listview的做法发现里面用到了适配器的模式就静下心来好好研究了下适配器模...

weixin_39967120的博客 200

产品竞争策略方法论:构建“差异化 + 结构化 + 系统化”的竞争优势

本文系统探讨了IoT产品竞争策略,指出当前企业普遍存在硬件能力强但商业竞争能力不足的问题。文章构建了五层竞争模型(产品层、体验层、服务层、数据层、生态层),提出五大核心竞争策略(成本领先、差异化竞争、聚焦竞争、生态竞争、数据驱动竞争),并详细阐述了差异化设计方法。通过行业案例分析(小米、苹果、特斯拉)和五步落地方法,强调从硬件竞争向系统优势转变的重要性。文章指出IoT竞争胜负关键在后半场的数据运营和服务延伸,建议企业通过构建差异化能力、完善服务体系、建立数据体系、逐步构建生态来避免价格战陷阱,实现从跟随到领

专注智能硬件软硬件产品经理成长与实战,分享从需求定义到量产落地的真实日记。涵盖IoT趋势洞察、研发协作经验、产品方法论与工具箱,用轻松有趣的“汪式”视角,陪伴产品经理成长、避坑与升级。 359

Java设计模式-适配器模式

适配器模式是一种结构型设计模式,它主要通过将一个类的接口转换成客户端所期望的另一个接口,来解决接口不兼容的问题。适配器模式一般包括三个角色:目标(Target)、适配器(Adapter)和被适配者(Adaptee)。其中,目标角色是客户端所期望的接口,适配器角色是将被适配者的接口转换成目标接口的类,被适配者角色是需要被适配的类。适配器模式与其他设计模式的区别在于,它主要是用于接口转换,而其他模式则主要用于解决其他问题,如工厂模式用于对象创建、单例模式用于对象的唯一性等等。

小薯条的博客 989

RTL优化与PPA分析:数字电路设计的关键技术

在数字集成电路设计中,RTL(寄存器传输级)优化是提升芯片性能、降低功耗和减小面积的核心技术。通过PPA(Power-Performance-Area)指标的平衡,工程师可以在不同时序约束下实现设计的最优化。本文基于Synopsys Design Compiler和开源工具Yosys的实验数据,展示了RTL优化在算术单元和控制逻辑中的显著效果,特别是在乘法器和除法器等复杂运算模块中。文章还探讨了AI辅助工具在RTL优化中的应用潜力,为数字电路设计提供了实用的技术参考和工程实践建议。

weixin_42186387的博客 619

李航《统计学习方法》课后习题答案(第2版)

李航《统计学习方法》课后习题答案(第2版) 章节 链接 第1章 统计学习及监督学习概论 点击进入 第2章 感知机 点击进入 第3章 k近邻法 点击进入 第4章 朴素贝叶斯法 点击进入 第5章 决策树 点击进入 第6章 逻辑斯谛回归与最大熵 点击进入 第7章 支持向量机 点击进入 第8章 提升方法 点击进入 第9章 EM算法及其推广 点击进入 第10章 隐马尔可夫模型 点击进入 第11章 条件随机场 点击进入     也可进入我的个人主页查看分类专栏

weixin_43646592的博客 2万+

【Java设计模式】适配器模式

文章目录概述适用场景优点缺点拓展适配器-相关设计模式演示 概述 定义:将一个类的接口转换成客户期望的另一个接口 使原本接口不兼容的类可以一起工作 类型:结构型 适用场景 ◆已经存在的类,它的方法和需求不匹配时(方法结果相同或相似) ◆不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案 优点 能提高类的透明性和复用,现有的类复用但不需要改变...

明月沉江春雾晓 1388

微信小程序|基于小程序实现定位打卡功能

此文主要在小程序内实现打卡功能,可根据用户位置与公司设定的打卡范围实时判断打卡是否合法,并在后台对打卡记录进行管理。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

【JAVA设计模式】之适配器模式(AdapterPattern)

使用场景 复用现有类的功能。 项目并非都是从零开始,而在我们编程过程中,也不是所有的功能都需要重新去写,复用现有类的功能是最直接有效的途径 版本升级与兼容性。 随着版本的迭代升级,旧有的一些功能渐渐无法满足需求,现实中又不能直接摒弃,使用Adapter模式可以轻松的来兼容维护新旧版本 图解适配器模式 ...

兵临城下的博客 286

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

DesignPattern_Java:Adapter Pattern

适配器模式 Adapter Pattern 变压器模式Convert the interface of a class into another interface clients expect.Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.将一个类的接口变换

Anonymous 2342

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java设计模式之适配器模式(Adapter Pattern)

总结: 适配器模式是一种简单而实用的设计模式,它能够解决接口不匹配的问题,使得原本不兼容的类可以一起工作。但是,我们发现MP3音乐的播放接口与MP4音乐的播放接口不同。介绍: 适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。例如,一个类使用的是旧的接口,而我们又想要使用一个新的接口,但两者之间方法的名称和参数不同。在上面的示例中,我们成功地使用了适配器模式,通过适配器将MP3音乐播放器适配成了MP4音乐播放器的接口,实现了MP3和MP4音乐播放器之间的无缝协作。

weixin_38682092的博客 152

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

adapter pattern java_Java设计模式之适配器模式Adapter Pattern

适配器模式Adapter Pattern类型:结构型模式定义:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。--《JAVA与模式》优点:更好的复用性更好的扩展性缺点:过多的使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是A接口,其实内部被适配成了B接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。...

weixin_42321940的博客 265

Java设计模式之适配器模式

Java设计模式之适配器模式前言正文一、定义二、分类三、结构四、缺省适配器模式五、双向适配器六、适配器模式优缺点与适用环境优点类适配器模式:对象适配器模式:缺点类适配器模式:对象适配器模式:适用环境 前言 适配器模式是一种使用频率非常高的结构型设计模式,如果系统中存在不兼容的接口,可以通过引入一个适配器来使原本因为接口不兼容而不能在一起工作的两个类能够协同工作。 在GoF设计模式中包含7种结构型模...

js_tengzi的博客 393

图解Java设计模式之适配器模式

图解Java设计模式之适配器模式现实生活中的适配器例子适配器模式基本介绍适配器模式工作原理类适配器模式类适配器模式注意事项和细节对象适配器模式对象适配器模式注意事项和细节接口适配器模式适配器模式在SpringMVC框架应用的源码分析适配器模式的注意事项和细节 现实生活中的适配器例子 泰国插座用的是两孔的(欧标),可以买个多功能转换插头(适配器),这样就可以使用了。 适配器模式基本介绍 1)适配器...

不一样的花朵的博客 519

Java设计模式-适配器模式(Adapter Pattern)

适配器模式作为一种结构型设计模式,在软件系统设计开发中使用到的频率非常之高,比如Java中的jdbc。本文结合具体案例讲解适配器模式的知识要点。

IT熊的专栏 387

Java设计模式-结构型设计模式-适配器模式

Java设计模式- 结构型设计模式-适配器模式

Fatter$hday的博客 1931

java设计模式—适配器模式(Adapter Pattern)

主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式 类的适配器模式 public class DesignPatternTest { @Test public void test1(){ Targetable target = new Adapter(); target.method1(); target.method2(); } } class Source { public void method1()

weixin_43920664的博客 183

java设计模式---适配器模式(Adapter pattern)

java设计模式—适配器模式(Adapter pattern) 前面已经详细的讲解了java23种设计模式中的创建型模式,接下来就讲解下结构型设计模式—适配器模式(Adapter pattern) 1. 定义 适配器模式把一个类的接口变换成客户端所期待的另一个接口,从而使原本因接口不兼容而无法一起工作的两个类能一起工作。适配器模式是结构型设计模式之一,其在不修改原来两个模块代码的情况下,将...

渔潭的博客 535

JAVA设计模式之适配器模式

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作

hyzsuccess的博客 894

JAVA设计模式——适配器模式

JAVA设计模式——适配器模式 一.主要概念 1.定义 把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 2.适配器模式涉及的角色 源(Adaptee):需要被适配的对象或类型,相当于插头。 适配器(Adapter):连接目标和源的中间对象,相当于插头转换器。 目标(Target):期待得到的目标,相当于插座。 3.适配器模式实现的三...

a158s168的博客 257
上一篇: Spring定时任务延时触发分析与解决:从单线程阻塞到多线程并发
下一篇: Bug 记录:SecureRandom.getInstanceStrong()导致验证码获取阻塞
刘火锅
博客等级 码龄7年 121粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值