设计模式之适配器

设计模式之适配器模式 适配器模式是一种非常有用的设计模式,它允许我们将不兼容的接口进行适配,使得原本不能一起工作的类可以一起工作。在软件开发中,我们经常会遇到接口不兼容的问题,使用适配器模式可以很好地解决这些问题。然而,我们也需要注意到适配器模式的缺点,避免过度使用导致系统变得复杂和难以理解。 阅读详情
介绍
  • Adapter即是将一个类的接口转换成客户想要的另一个接口;
  • 当我们想要复用一些现存的类, 但这些类提供的接口又与自己想要用的接口不匹配, 同时又不能改变这些接口时(比如被封装或没不应该为了使用而专门改变一个已有的类), 就可以用Adapter模式;
  • Adapter有类Adapter和对象Adapter两种用法:
    • 类Adapter: 通过多重继承实现, 其优点是简单些, 但缺点是无法利用被适配对象的子类Adaptee
    • 对象Adapter: 通过对象组合实现, 其优点是通过被适配对象的指针,我们可以适用adaptee的子类;
例子
  • 这里给出电源适配器的例子, 美国的家用电压是120V, 中国的电压为220V, 那么问题来了, 我们国内设计的要求输入电压为220V的电脑如何在美国使用? 在美国使用电脑, 不可能让美国人专门为你建一条220V的电路, 也不能让中国的电脑就使用美国的标准, 显然者两者都是不可变得, 但又要使用, 这时适配器的作用就来了;
例子
// 在美国使用电脑, 110V的接口
class ChargeInUSA
{
public:
    ChargeInUSA() {cout<<"in usa we need use 120v voltage to charge the computer"<<endl;}
    virtual void ChargeComInUSA()
    {
        cout<<"charge computer with american principle 120V"<<endl;
    }
};
// 中国充电,220V的接口
class ChargeInChina
{
public:
    void ChargeComInChina()
    {
        cout<<"charge computer with chinese principle 220v"<<endl;
    }
};
// 类适配器
class VoltageAdapter : public ChargeInUSA, private ChargeInChina
{
public:
    virtual void ChargeComInUSA()
    {
        cout<<"using voltage adapter, change 120v to 220v ..."<<endl;
        ChargeComInChina();
    }
};
// 使用
class LiveInUSA
{
public:
    LiveInUSA(){cout<<"live in america, we have different principle with china"<<endl;}
    void SetChrgVol(ChargeInUSA* c){chrg = c;}
    void ChargeCom(){chrg->ChargeComInUSA();}
private:
    ChargeInUSA* chrg;
};
// 如上面的例子, 实际应用中,我们可能会在很多地方用到chrg->ChargeComInUSA(); 那么现在如要使用ChargeComInChina()接口, 显然不能到处取修改已经使用的接口, 那么这里使用适配器则是非常好的设计
int main()
{
    LiveInUSA* xiaoming = new LiveInUSA;
    xiaoming->SetChrgVol(new VoltageAdapter);
    xiaoming->ChargeCom();
    return 0;
}
一文搞懂【Linux 搭建 Dread Hunger 服务器】附本体及Docker部署集群方案 看直播发现了五花八门的开服器和版本,一时兴起按官方文档进行了搭建尝试,所以我的版本基于官方Stream2024.01.10更新的版本,也就是停服时的玩法,应该可以根据mod和补丁魔改成更那些开服器一样的版本,本文不做谈论,注重服务器搭建,毕竟8个人不可能在一个局域网里乱象:首先,我看了大量教程视频,一类是开服器的推广,另一类自建的基本采用Windows搭建,我觉得最离谱的是大部分教程都会教你买一台远程Windows虚拟机??? 阅读详情

相关推荐

ROS——无人机ROS仿真包 rotors_simulator 编译教程

文章目录 安装wstool sudo apt install python3-wstool 创建ROS工程 $ mkdir -p ~/UAV/src $ cd ~/UAV/src $ catkin_init_workspace # initialize your catkin workspace $ wstool init 下载源码 git clone git@github.com:ethz-asl/rotors_simulator.git 源码链接: https://github.com/eth

漫长IT路 5863

彻底搞懂设计模式DesignPattern-适配器模式

简介 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper) 适配器模式属于结构型模式 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式 工作原理 适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容 从用户的角度看不到被适配者,是解耦的 用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法 用户收到反馈结果,感觉

Ping 281

快速上手:网页版EggNOG功能注释全流程解析

本文详细解析了网页版EggNOG在蛋白序列功能注释中的全流程操作,从初识工具到实战技巧,涵盖FASTA格式处理、参数设置、结果解读及常见问题解决方案。特别适合生物信息学初学者快速掌握这一高效注释工具,提升非模式生物基因组研究的注释效率。

weixin_29310631的博客 189

适配器设计模式

适配器设计模式(Adapter Design Pattern)是一种结构型设计模式,用于解决两个不兼容接口之间的问题。适配器允许将一个类的接口转换为客户端期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式的主要目的是:在不修改现有代码的情况下,使不兼容的接口能够协同工作。通过引入适配器角色,客户端可以使用目标接口与需要适配的类进行通信,从而实现解耦和扩展性。类适配器和对象适配器。

学习技术的路上不断沉淀自己 1312

STM32CubeIDE(CUBE-MX hal库)----RTC时钟断电保持与时间校准实战

本文详细介绍了在STM32CubeIDE中使用CUBE-MX和HAL库实现RTC时钟断电保持与时间校准的实战方法。通过硬件配置、后备寄存器(BKP)操作及软件校准策略,确保嵌入式设备在断电后仍能保持准确时间,适用于智能电表、环境监测等物联网应用场景。

weixin_29189373的博客 216

个人信息保护合规审计人员(中级)能力测试试卷

本文是关于个人信息保护合规考试的试题解析,内容涵盖《个人信息保护法》相关规定。试卷包含单选题、多选题、判断题、简答题和案例分析题五种题型,总分100分,考试时间120分钟。试题重点考察个人信息处理的基本原则、敏感个人信息处理要求、合规审计流程、个人信息保护影响评估等内容。通过案例分析题详细解析了人脸识别登录、数据共享、跨境传输等场景下的合规要求。参考答案均严格依据《个人信息保护法》等法律法规,为个人信息处理活动提供了明确的合规指引。

qq_41525079的博客 850

14【适配器设计模式】_适配器 设计模式

适配器设计模式(AdapterPattern):将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式起着一个转换的作用,将一种接口转化为另一种符合需求的接口;适配器模式在生活中有很多应用场景,例如:电源转接头、手机充电转换头、变压器、扩展坞、以及各种外接设备的转换器。这些场景都是在输入一个不是目标的功能接口但结果却转换为目标接口;

2501_90329892的博客 759

深度强化学习:Actor-Critic、A2C、A3C

Actor-Critic算法是强化学习中常用的一种方法,policy-based,通过演员和评论员或者是策略网络和价值网络的结合进行学习

weixin_51995147的博客 1427

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

1、定义         适配器模式简单来说就是将一个接口转换成另一种接口,从而让原本不兼容的接口能够兼容。         从用户的角度感觉不到被适配者,实现了解耦,用户调用适配器转换出来的接口方法,适配器再调用被适配接口的相关方法,被适配的接口对于用户来说是透明,用户也无需关心被适配的接口。 2、使用场景         ① 对于不兼容类型的接口进行转换。         ② 在输入...

inventor1024的博客 387

使用 DEM 模拟金属烧结过程

了解离散元素法 (DEM) 如何彻底改变烧结工艺,提高制造业的效率和精度。

jkh920184196的博客 1127

PCIe-Orders set Blocks之symbol对齐

有序集的使用场合很多,如在链路link阶段,进入polling后,便开始有序集的发送。一个 Ordered Set Block 包含一个同步头,后跟一个有序集。多通道链路的所有 Lane 必须同时传输相同的有序集,而且有序集的第一个符号定义了有序集的类型。但在PCIE中,8GT/s及以上的速率,采用的是128b/130b编码。128-bit是想要传输的payload,实际会传输130-bit,多出来的2-bit就是sync header。Block有两种,通过Sync header区分:10b:表示data

weixin_44700185的博客 813

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

适配器模式(Adapter Pattem)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构型模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式基本介绍:Adapter类,通过继承 src 类,实现dst 类接口,完成src->dst 的适配。

weixin_46073538的博客 1223

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

念兮为美 2279

C# 面试问题大全:033.什么是适配器设计模式(Adapter Design Pattern)?

适配器模式通常有两种实现方式:类适配器和对象适配器。适配器设计模式是一种非常有用的结构型设计模式,它通过接口转换的方式解决了不同组件之间的接口不兼容问题。

caifox的博客 842

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Design Pattern Adaptor 适配器设计模式

适配器设计模式是为了要使用一个旧的接口,也许这个接口很难用,也许是和新的更新的接口不兼容,所以需要设计一个适配器类,然后就可以让新旧的接口都统一。 就是这样的一个图: 比如我们有这样的一个旧的类: class OldName { public: virtual void setName(string n) = 0; virtual string getName() = 0; };

靖空间 1641

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

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

Hanson的博客 1881

lwip-2.0.3

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

14【适配器设计模式】

适配器设计模式(Adapter Pattern):将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式起着一个转换的作用,将一种接口转化为另一种符合需求的接口;适配器模式在生活中有很多应用场景,例如:电源转接头、手机充电转换头、变压器、扩展坞、以及各种外接设备的转换器。这些场景都是在输入一个不是目标的功能接口但结果却转换为目标接口;......

緑水長流*z 3406

设计模式---适配器模式(DesignPattern_Adapter)

摘录自:设计模式与游戏完美开发 十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽、Product Evangelist at Unity Technologies——Kelvin Lo、信仁软件设计创办人—— 赖信仁、资深3D游戏美术——刘明恺 联合推荐全书采用了整合...

su9257的博客 134

设计模式——适配器设计模式(结构型)

本文详细介绍了适配器设计模式,包括其定义、核心思想、角色、结构、实现方式、适用场景及实战示例。适配器模式是一种结构型设计模式,通过将一个类的接口转换成客户端期望的另一个接口,解决接口不兼容问题,提高系统灵活性和可复用性,符合“开闭原则”。文中还探讨了对象适配器和类适配器两种实现方式,以及如何结合策略模式动态选择适配器。

庄小焱 1730

iOS常用设计模式——适配器Adapter

本文介绍了iOS常用设计模式中的Adapter,Adapter在Objective-C中通常使用对象型Adapter,这种设计模式常用的场景是遗留代码复用和类库迁移等,iOS程序员在使用UITableView时,通常都会用到这种设计模式。

大柚的专栏 2695

DesignPattern - 适配器模式【结构型】

欢迎关注微信公众号:FSA全栈行动 ???? 一、适配器模式介绍 适配器模式(Adapter Pattern)属于结构型模式,作为两个不兼容的接口之间的桥梁。 常见的几类适配器 接口的适配器模式【空实现】:不想实现一个接口中所有的方法时,可以创建一个 Adapter,实现所有方法,在写别的类的时候,继承这个 Adapter 类即可。 类的适配器模式【继承(旧) + 实现(新)】:想将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。 对象的适配器

GitLqr的博客 331

设计模式——适配器模式

适配器模式(Adapter Pattern)是一种结构型设计模式,目的是将一个类的接口转换成客户端所期望的另一个接口。适配器模式让原本接口不兼容的类可以一起工作。简单来说,适配器模式就是提供一个中介者,使得两个原本不能直接交互的接口可以通过适配器实现兼容和交互。就像不同国家的插座标准一样,比如说,欧洲国家的插座标准不能满足中式插头电器的正常使用,那么就需要一个欧转中的转换头,使得中式插头的电器可以正常使用。适配器就是这个道理。

AIAIAIXIAO_的博客 1593

设计模式(三)——适配器设计模式

今天复习这样一种设计模式,当客户端想要使用一个类,但是这个类的接口并不符合客户端的要求时,我们就会想到这个设计模式——适配器设计模式,把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式分为两种:类的适配器模式和对象的适配器模式。 首先,这两种模式的类图关系分别为: 1.类的适配器模式 2.对象的适配器模式

Zwenjun的专栏 801
上一篇: 设计模式之观察者模式
下一篇: 模式设计之状态模式
呵离
博客等级 码龄12年 18粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值