使用Adapter(适配器)模式兼容原本不兼容

这个模式有些模糊,作用就是匹配二者不同,其实通过修改代码可以更简洁的实现修改,但是问题出在如果不能修改代码的时候,我们应该怎么办?

先看看代码,首先是2个接口:

package moshi.adapter;

public interface SayGood {

public void sayGood();

}


package moshi.adapter;

public interface SayHello {

public void sayHello();

}


一个Hello,一个Good。下面2个代码分别实现它们:

package moshi.adapter;

public class SayGoodImp implements SayGood {

public void sayGood() {
System.out.println("Goog");

}

}


package moshi.adapter;

public class SayHelloImp implements SayHello {

public void sayHello() {
System.out.println("Hello");
}

}


怎么样让SayGood里也能说sayHello?我们可以改代码。

package moshi.adapter;

public class SayGoodImp implements SayGood,SayHello{

public void sayGood() {
System.out.println("Goog");

}

public void sayHello() {
System.out.println("Hello");

}

}


我们让这个类实现这2个接口,问题解决,但是如果强制我们不修改SayGoodImp类的代码怎么办?我们就不能实现SayHello这个接口了。我们只能写个Adapter(适配器)。

package moshi.adapter;

public class SayGoodApapter implements SayHello {

//定义SayHello引用
private SayHello sayHello;

//进行初始化注入
public SayGoodApapter(SayHello sayHello){
this.sayHello=sayHello;
}
//转移依赖性
public void sayHello() {
sayHello.sayHello();
}

}


哈哈,其实也就是变相的改代码。转移一下依赖性。OK,看看怎么使用:

package moshi.adapter;

public class TestSayGood {

public static void main(String[] args) {

SayGoodApapter SayGoodApapter=new SayGoodApapter(new SayHelloImp());
SayGoodApapter.sayHello();

}

}


呵呵,把SayHello注入到SayGoodApapter类中。这个时候SayGood也能说声SayHello了。你还费解不?
OpenPose 论文理解 OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation paper: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields link: OpenPose paper... 阅读详情

相关推荐

附录B:Standard Delay Format(SDF)(上)

本附录将介绍标准延迟标注格式,并说明了如何在仿真中执行反标。 延迟格式描述了设计网表的单元延迟和互连走线延迟,无论设计是用两种主要硬件描述语言(VHDL或Verilog HDL)中的哪一种所描述的。 本章还会介绍仿真的反标(backannotation),STA的反标其实是一个简单直接的过程,其中DUA中的时序弧将由SDF所指定的延迟进行标注。

To the beyond and infinity! 5411

Adapter模式(Object Adapter)

Adapter模式使原本由于接口不兼容而不能在一起工作的类可以一起工作,即为一个内容合适但接口不匹配的对象创建一个新的接口.Adapter模式让现存的对象适应新的类结构,而不受他们的接口限制. 例如现在,我们有一个球袋类BasketballBag负责完成装入篮球。 [code="java"] public class BasketballBag{ public void putBa...

Ozone 179

python提取图片中的文字写入excel文件,并打包为exe可执行文件

python提取图片中的文字写入excel文件,并打包为exe可执行文件

liqiang12689的博客 989

设计模式:适配器模式(Adapter)

 适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。  适配器模式有类适配器模式和对象适配器模式两种不同的形式。 类适配器  类适配器模式把适配的类的API转换成目标类的API  适配器模式所涉及的角色: 目标角色(Target): 这就是所期待...

weixin_34347651的博客 411

汽车LED驱动芯片TPS92682-Q1 SPI接口配置与调试实战指南

SPI(串行外设接口)作为一种高速、全双工的同步串行通信总线,广泛应用于微控制器与外围设备之间的数据交换。其工作原理基于主从架构,通过时钟、数据线和片选信号实现设备间的精准时序控制。在汽车电子和工业控制领域,SPI因其简单高效、易于扩展的特性,成为配置复杂电源管理芯片、传感器和存储器的关键技术。通过SPI接口,工程师能够动态调整设备参数、实时读取状态信息,并实现复杂的故障诊断与保护策略,极大地提升了系统的灵活性与可靠性。本文以汽车级双通道LED恒流驱动器TPS92682-Q1为例,深入解析如何通过SPI接口

weixin_29185493的博客 288

警惕AI依赖:如何避免数字水蛭侵蚀你的认知能力

在人工智能技术日益普及的今天,人机协作已成为现代工作流的核心范式。其原理在于通过算法模型辅助人类完成信息处理、内容生成等任务,从而提升效率。然而,过度依赖AI可能导致认知卸载,引发思考能力退化等潜在风险。从技术价值看,AI的核心在于增强而非替代人类智能,关键在于建立健康的协作模式。在应用场景上,无论是编程开发、内容创作还是决策分析,用户都需警惕工具依赖对深度工作、创造性思维和决策责任的侵蚀。本文聚焦于识别AI依赖的早期信号,并提供构建分阶段使用流程、将AI作为质疑者等具体策略,旨在帮助读者守护核心认知能力,

weixin_30240349的博客 625

adapter模式

Adapter 一.  意图 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 二.适用性 1.    想使用一个已经存在的类,而接口不符合你的需求 2.    想创建一个可以复用的类,而该类与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作. 3.    (仅使用与对象Adapter)想使用一

b711183612的专栏 483

前端实现微信扫一扫的思路

本篇文章的关键点就是讲解了我在实现处理多张二维码的场景时的思路,利用canvas遮挡识别过的二维码这个思路是pbk-bin大佬最先想到的,在实现这个需求以后还是很感叹这个思路的巧妙。👏pbk-bin🎁~如果文章对你有帮助,不妨赠人玫瑰,手有余香,预计将会在下篇更新较为完整的微信扫一扫界面和功能。

fang_my的博客 2488

不兼容结构的协调——适配器模式(四)

9.6 缺省适配器              缺省适配器模式是适配器模式的一种变体,其应用也较为广泛。缺省适配器模式的定义如下:缺省适配器模式(Default Adapter Pattern):当不需要实现一个接口所提供的所有方法时,可先设计一个抽象类实现该接口,并为接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可以选择性地覆盖父类的某些方法来实现需求,它适用于不想使用一个接口中的所

刘伟技术博客 2万+

第201期 解锁科研效率新高度:Claude 科学技能插件(claude-scientific-skills)深度体验

科研AI助手Claude Scientific Skills开源工具为Claude大模型扩展科学能力,覆盖数据可视化、数学计算、学术格式处理等科研全流程需求。该插件支持LaTeX公式生成、自动化科研图表绘制、学术文档规范校正等功能,让研究人员通过自然语言指令即可完成专业任务。项目开源可定制,支持特定学科需求扩展,目前已托管于GitHub。使用门槛低,只需配置Claude API密钥即可快速启用,帮助科研人员从繁琐技术细节中解放,聚焦核心研究创新。

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 1358

RK+linux教程:RK3588 RGA硬件加速在YOLOv5图像预处理中的深度应用教程

摘要: 本教程深入解析了RK3588芯片的RGA硬件加速器在YOLOv5图像预处理中的应用。通过专用硬件设计,RGA支持图像缩放、边界填充等核心操作,结合零拷贝技术显著提升处理效率。重点分析了LetterBox算法的RGA实现,包括参数计算、边界填充和性能优化,并与传统CPU处理对比,展示了RGA在高分辨率图像处理中的优势。教程还提供了统一的预处理接口设计,便于在OpenCV与RGA方案间灵活切换,为RK3588平台的深度学习部署提供实用优化方案。

LXY_LOVE36的博客 976

适配器模式(Adapter Pattern)介绍适配器模式 是一种结构型设计模式,用于将不兼容的接口转换为目标接口,使原本无法直接协同工作的类能够一起工作

与 StatusDebouncer 的结合: 在你的 StatusDebouncer 场景中,适配器模式可用于处理来自外部系统的不兼容状态数据。适配器模式(Adapter Pattern)介绍适配器模式 是一种结构型设计模式,用于将不兼容的接口转换为目标接口,使原本无法直接协同工作的类能够一起工作。如果需要结合其他模式(如命令模式、抽象工厂)、更复杂的测试用例,或针对特定场景的优化(如多设备支持),请告诉我!分析:不足 3 次 1(true),不触发。分析:不足 3 次 true,不触发。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 706

手把手教你学simulink实例--基于Simulink的储能系统性能评估与仿真

储能系统是现代能源体系中的关键组成部分,广泛应用于可再生能源并网、电网调峰调频、电力质量改善以及电动汽车充电等领域。为了提高储能系统的运行效率和可靠性,对其性能进行准确评估至关重要。基于MATLAB/Simulink平台,可以构建储能系统的动态模型,并通过仿真分析其在不同工况下的性能表现。本项目旨在研究储能系统的建模方法、控制策略及其性能评估指标,并通过Simulink仿真验证系统的动态特性和稳态性能。

MHD0815的博客 195

适配器模式(Adapter)

Adapter适配器模式——对象结构模式 1.意图 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 2.适用性 你想使用一个已经存在的类,而它的接口不符合你的需求 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作 (仅使用于对象Adapter)你想使用一...

行走 759

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java适配器怎么用_java中适配器模式详解和使用方法

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。我们通过下面的实例来演示适配器模式的使用。其中,音频播放器设...

weixin_39671621的博客 372

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

设计模式之Adapter模式

同Facade模式一样,Adapter模式也是一种包装(wrapper),是很常用的模式,不过他们之间还是有微妙差别。Adapter的意图可以这样表述:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原来由于接口不兼容而不能一起工作的类可以一起工作。采用Adapter模式是源于这样的问题:原有系统的数据和行为都正确,但接口不符。通常用于必须从抽象类派生时。其实现方式是将原有

liumr的专栏 832

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

图示,Adapter 持有 Service 对象实例,method 方法实现自 Client Interface,使 client 可以调用,method 内部逻辑则将 client 的入参转换后交给 service 处理。适配器,实现 Target 接口,将 Adaptee 的方法改造成兼容 client 的形式,供 client使用。适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。被适配的对象,原有方法不能直接给 client 使用。结构型设计模式-适配器 Adapter。

菜皮日记 72

创建型-适配器模式

适配器模式的英文翻译是 Adapter Design Pattern。顾名思义,这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。

heheda123a的博客 108

适配器模式实例

适配器模式实例

zhangjiaming_zjm的博客 1581

Java设计模式之适配器模式

适配器模式(Adapter Pattern)将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 public class DuckTestDrive { public static void main(String[] args) { MallardDuck duck = new MallardDuck();//创建一只鸭子 WildTurk

Hello_zihan的博客 280

十五、适配器模式(Adapter)

一、什么是适配器模式 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、适配器模式角色 1、Target:客户所期待的接口。目标可以是具体或抽象的类,也可以是接口。 2、Ad...

chunbixi5712的博客 91

设计模式笔记(十二) —— 适配器模式

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。    使用场合:在双方都不太容易修改的时候再使用适配器模式适配。 using System;/** * 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起

leehao_vip的专栏 467

java设计模式之适配器模式(通俗易懂)

前言: 适配器模式(Adapter Pattern):将一个接口转换成客户所希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象型结构模式《设计模式的艺术》 以下举例子理解下这种思想是怎么实现的,spring有很多适配器都是运用了这种设计模式的 首先指出三个概念 target:目标类 adaptee:需适配类 adapter:适配器 我现在就举一个非常简单的列子做说明:以我们手机跟电脑为例, 手机是typeC接

VincentGTX_huang的博客 374

java235设计模式_Java设计模式百例 - 适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它把一个类的接口变换成客户端所期待的另一种接口,从而使原本不匹配而无法在一起工作的两个类能够在一起工作。“适配器”这个词我们平时倒是不少见,比如“电源适配器”,将220V的点转换为电子设备可以接收的小电压的电,可见变压器就是一种“适配器”。不难想到,读卡器是作为内存卡和笔记本之间的适配器...

weixin_35181005的博客 141

Design Patterns 结构模式 之 Adapter 模式

Design Patterns 结构模式 之 Adapter 模式 定义 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 [img]http://dl.iteye.com/upload/picture/pic/66798/3f434ddb-84fe-3d54-8c19-47d7fac79b92.jpg[/img] ...

生活需要用心 127
上一篇: java回调
下一篇: 使用Facade(外观)模式改善现有软件设计—混乱变简单
NationSoftware
博客等级 码龄18年 2粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值