[设计模式]适配器模式(Adapter)

设计模式|适配器模式(Adapter Pattern) 适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。这种模式通常用于解决两个已有接口之间不兼容的情况。适配器模式使得不兼容的接口能够协同工作,而无需修改已有的代码。这对于集成已有代码库或者第三方组件时非常有用,因为它可以帮助在不破坏现有接口的情况下实现必要的功能补充。 阅读详情

1.意图

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

2.结构与参与者


3.代码示例

#include <iostream>
#include <string>
using namespace std;

class Player
{
protected:
	string name;
public:
	Player(string strName) { name = strName; }
	virtual void Attack()=0;
	virtual void Defense()=0;
};

class ChinesePlayer
{
protected:
	string name;
public:
	ChinesePlayer(string strName) { name = strName; }
	virtual void ChineseAttack()=0;
	virtual void ChineseDefense()=0;
};

class ChineseCenter : public ChinesePlayer
{
public:
	ChineseCenter(string strName):ChinesePlayer(strName){}
public:
	virtual void ChineseAttack()
	{
		cout<<name<<"中锋进攻"<<endl;
	}
	virtual void ChineseDefense()
	{
		cout<<name<<"中锋防守"<<endl;
	}
};

class Forwards : public Player
{
public:
	Forwards(string strName):Player(strName){}
public:
	virtual void Attack()
	{
		cout<<name<<"前锋进攻"<<endl;
	}
	virtual void Defense()
	{
		cout<<name<<"前锋防守"<<endl;
	}
};

class Center : public Player
{
public:
	Center(string strName):Player(strName){}
public:
	virtual void Attack()
	{
		cout<<name<<"中锋进攻"<<endl;
	}
	virtual void Defense()
	{
		cout<<name<<"中锋防守"<<endl;
	}
};

//为中锋翻译
class TransLater: public Player
{
private:
	ChineseCenter *player;
public:
	TransLater(string strName):Player(strName)
	{
		player = new ChineseCenter(strName);
	}
	virtual void Attack()
	{
		player->ChineseAttack();
	}
	virtual void Defense()
	{
		player->ChineseDefense();
	}
};
//客户端
int main()
{
	Player *p=new TransLater("小李");
	p->Attack();
	return 0;
}


Golang 设计模式系列4: 适配器模式(Adapter design pattern) 适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 适配器模式包含如下角色: Target:目标抽象类 Adapter:适配器类 Adaptee:适配者类 Client:客户类 实现 Target:目标抽象类 type L... 阅读详情

相关推荐

(32)C#设计模式——适配器模式(Adapter Pattern)

引言 在实际的开发过程中,由于应用环境的变化,我们需要的实现在新环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。如何在新环境中调用“现存的对象”呢?采用适配器模式可以解决。适配器模式使得新环境中不需要去重复实现已经存在了的实现,而很好的把现有的对象(指原来环境中的现有对象)加入到新环境中来使用。 详细介绍 定义:把一个类的接口变换成客户端所期待的另一种接口,从而使得原本接口不匹...

编程菜鸟0604的博客 2020

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

C++设计模式——适配器模式(Adapter Pattern) 微信公众号:幼儿园的学霸 目录 文章目录C++设计模式——适配器模式(Adapter Pattern)目录定义定义作用/解决的问题适配器模式中的角色代码示例总结优缺点适用场景参考资料 定义 定义 Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t ot

leonardohaig的博客 1547

野火STM32F407(骄阳)+无刷直流驱动板+永磁同步电机控制学习记录(四)(基于HAL库)

以上内容都是参考别人资料自学的,很多地方都是凭感觉,因为理论部分不太会算,只要电机能转就行,其他性能指标都没考虑,因为不会,所以这纯属是学习记录帖。带宽在500时,电流波动小,但是响应很慢,就是堵转后不太容易恢复转动。速度环带宽设定小了,响应不够快,带宽设定大了波动比较大,电机感觉起来也震一点,而且,当带宽设到200的时候,启动直接就锁死了,应该是PI增益设定太大了。电流环带宽的试验:去掉速度环,让Iq_Set=2,Ud=0,此时电机是电流环闭环控制,用手堵转电机然后松开,看电流的波动以及响应情况。

XUEXIDEXIAOhai的博客 4553

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

适配器是接口转换器,为需要在一起工作但不兼容的两个接口桥梁。 适配器是常用的设计模式之一,现在是互联网时代,很多应用程序都会调用第三方的接口,比如支付接口、短信接口、验证码接口、数据对象存储接口等。而这些接口都是不一样的,如果在应用中要调用多个接口完成相同功能,就需要适配器。 适配器在生活中也很常见,如果手机充电器,笔记本充电器,都是电源适配器。在我国家里所使用的是220伏的电源电压,美国等国外有的使用110V电源电压,而普遍的电子产品一般所需的电源电压为5伏至20伏左右。如果没有电源适配器,这些电子产

xjj1314的专栏 461

MTK PE+2.0介绍

  PE+2.0介绍:   1.      PE+2.0的状态机: 2.      升压波形协议及编码规则: PE+2.0软件设计:   在充电器类型为标充且底层电量SOC在1%—95%之间时,开始PE+2.0升压充电器的检测:首先将VBUSreset至5V,之后发送8.5的current pattern再获取此时VBUS电压和8.5V比较,若其与8.5的差值绝对值在0.5之...

raydom07的博客 1万+

AirSim中图像API的应用

解析Airsim图像获取保存的api

fegxg的博客 1604

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

适配器模式是一种结构型设计模式,其核心目的是:将一个类的接口转换成客户端期望的接口,使原本由于接口不兼容而不能一起工作的类可以协同工作。换句话说,它就像现实生活中的插头适配器:你想插电器,但插头类型不匹配,适配器帮你转换接口。

TechNomad的博客 1510

Orcad 17.2导出PDF原理图终极指南:从Ghostscript安装到带属性书签配置

本文是Orcad 17.2导出高质量PDF原理图的终极指南。针对导出过程中常见的Ghostscript安装报错、软件卡死及版本兼容性问题,提供了详细的解决方案。重点推荐使用Ghostscript 9.53.3版本以确保最佳兼容性,并深入讲解了从安装配置、内存优化到高级书签属性设置的完整流程,帮助硬件工程师稳定、高效地生成带完整器件属性和导航书签的PDF文档。

weixin_29281915的博客 393

设计模式教程:适配器模式(Adapter Pattern)

将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类能够一起工作。

遇见伯灵说的博客 1816

智能车小白也能懂:手把手教你用LM358和工字电感搭建电磁循迹模块(附PCB设计避坑)

本文详细介绍了如何利用LM358运放和工字电感搭建智能车电磁循迹模块,从电感选型、电路设计到PCB布局和焊接调试,提供全流程实战指南。特别针对新手常见问题,如信号干扰、电路饱和等,给出具体解决方案和参数配置,帮助智能车比赛爱好者快速掌握电磁循迹技术。

weixin_30307921的博客 400

STM32与AD7606的SPI通信优化:提升高精度数据采集效率

本文深入探讨了STM32与AD7606的SPI通信优化策略,旨在提升高精度数据采集系统的效率与稳定性。文章从硬件连接、电源去耦、PCB布局等基础环节入手,详细解析了软件驱动中SPI模式配置、DMA应用及精准时序控制等关键优化技术,并提出了系统级的性能提升方案,帮助开发者解决高速采样下的数据跳动、效率瓶颈等实际问题。

weixin_29192211的博客 392

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

适配器模式 定义 将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作。 分类 类适配器、对象适配器。 角色 目标接口:Target,该角色把其他类转换为我们期望的接口。 被适配者: Adaptee ,原有的接口,也是希望被适配的接口。 适配器: Adapter, 将被适配者和目标接口组合到一起的类。 适用场景 想要使用一个已经存在的类,但是它却不符合现有的接口规范,导致无法直...

kaven 4894

YOLOv11涨点改进| TGRS 2026 顶刊| 注意力改进篇| 引入MSEA多尺度边缘感知注意力,助力红外小目标检测、遥感目标检测、工业缺陷检测、图像去雨雾任务高效涨点

🔥本文提出了一种基于MSEA多尺度边缘感知注意力的YOLOv11改进模型,通过增强网络对边缘、纹理和细粒度信息的感知能力,显著提升复杂背景下的目标检测性能。MSEA模块采用多尺度空洞卷积提取上下文特征,并通过边缘监督和注意力融合机制强化目标边界信息。实验表明该方法在小目标、边界模糊目标和复杂纹理目标检测任务中表现优异,尤其在遥感、工业缺陷和红外检测等场景具有显著优势。文章详细介绍了MSEA的结构原理、核心代码实现、模块配置方法以及三种YOLOv11改进方案.

Ai缝合怪、助力小伙伴高效发论文 181

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

来自于:http://www.cnblogs.com/zhenyulu/articles/39386.html参考于:http://www.dofactory.com/Patterns/PatternAdapter.aspx一、 适配器(Adapter)模式适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。名称由来

薛敬明的专栏 2751

UFAST车道线检测 Ultra-Fast-Lane-Detection 从环境搭建到复现完成(一)

UFAST车道线检测 Ultra-Fast-Lane-Detection 从环境搭建到复现完成(一)

m0_46364958的博客 4345

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

、本篇文章将23种设计模式中的适配器模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

设计模式-05适配器模式Adapter Pattern

适配器模式摘要 适配器模式是一种结构型设计模式,用于解决接口不兼容问题。它通过将一个类的接口转换成客户期望的另一个接口,使原本不兼容的类能够协同工作。 核心特点: 包含目标接口(Target)、适配器(Adapter)和被适配者(Adaptee)三个角色 提供两种实现方式:类适配器(继承)和对象适配器(组合) 适用于复用现有类但其接口不符合需求的情况 典型应用: 如媒体播放器示例中,AudioPlayer通过适配器支持VLC和MP4等不同格式的播放器,而无需修改原有播放器代码。双向适配器还可实现接口间的双向

d3y1`5 81_09 900

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

设计模式--适配器模式 Adapter Pattern

(1)适配器模式将某个类的接口转换成为客户端期望的另一个接口表示,主要的目的是兼容性,让原本应接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper).(2)适配器模式属于结构型模式(3)主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。

m0_63622279的博客 1009

设计模式-适配器模式-adapter pattern

类适配器通过继承实现适配,适用于适配者接口较为固定的情况。对象适配器通过组合实现适配,提供了更高的灵活性,可以在运行时动态改变适配者对象。接口适配器通常用于适配多个具有不同接口的适配者,通过实现多个接口来统一调用。在实际开发中,选择哪种适配器模式取决于具体的设计需求和现有的代码结构。

wesigj的博客 1861

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

适配器模式又叫变压器模式。它的功能是将一个类的接口变成客户端所期待的另一个类的接口,从而使原本因接口不匹配而无法一起工作的两个类可以一起工作。属于结构型设计模式。

Lucifer ZHAO 303

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

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

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

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

定义 适配器模式是通过一个类的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器从结构上可以分为类适配器和对象适配器。其中类适配器使用继承关系来对类进行适配,而对象适配器是使用对象引用的方法来进行适配的。 C#例子 public interface ITarget { void Request(); } ...

易兒善 604

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

适配器模式的核心思想是通过一个中间的适配器类,将两个不兼容的接口进行适配。这个适配器类将目标接口(客户端期望的接口)和被适配者类(已有的接口)连接起来,使得客户端可以通过目标接口调用被适配者类的功能。 适配器模式主要有三种形式:类适配器模式、对象适配器模式和接口适配器模式(默认适配器模式)。

J^T的博客 1118

【c++设计模式09】结构型1:适配器模式(Adapter Pattern)

适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。适配器模式使得原本由于接口不兼容而无法合作的类能够协同工作。

junxuezheng的博客 2051

Carson带你学设计模式:适配器模式(Adapter Pattern)

手把手带你全面了解适配器模式

Carson带你学Android 3万+

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

What: 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 Why: 优点: 1.客户端通过适配器可以透明地调用目标接口; 2.复用了现存的类,不需要修改原有代码而重用现有的适配者类,符合开闭原则; 3.将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题; 缺点: 1.Java不支持多重继承,一次最多可以继承一个适配器类; 2....

qq_37212210的博客 444
上一篇: [设计模式]单例模式(Singleton)
下一篇: [Python]Python oop的私有制
sicofield
博客等级 码龄18年 169粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值