适配器模式C++详解

C++11 adapter介绍 C++11 adapter介绍前言粗浅的理解容器适配器迭代器适配器1.插入迭代器适配器2.反向迭代器适配器3.IO迭代器适配器仿函数适配器仿函数STL的仿函数仿函数适配器为啥count_if只接受一元函数参数 前言 适配器这个概念我其实直到现在都还没有理解,不过我在刷面经的时候偶尔能看到这个面试点,所以咱们就一起来看看。(C++就是这样啊,真的会问的非常深入的) 粗浅的理解容器适配器 这还是在看完了ccyanxyz的文章后才豁然开朗。首先呢,adapter不仅仅只有容器适配器,它有约三个大的方面,分别是容器 阅读详情

适配器模式


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

  • 主要解决的原本的类已经有了,但却不能直接使用,而且短时间内无法改造它,或者压根就无法改造的时候就需要适配它。

也就是说,当系统数据和行为都是正确的时候,但是接口不符合,这时候就使用Adapter

适配器模式C++实现

假设,现在有现有的各种动物,都是现成的,有猫、狗。他们都有各自的方法比如说,卧倒,打滚等,但是呢,他们的接口又不一样。为了使主人去让猫、狗做动作的接口一致,就需要适配器。因为语言不通,一个喵喵喵,一个汪汪汪。

adpter.h

#include <iostream>

class DOG {
 public:
  void Dog_Bedding() { std::cout << "小狗子,请卧倒" << std::endl; }

  void Dog_Roll() { std::cout << "小狗子,请打滚" << std::endl; }
};

class CAT {
 public:
  void Cat_Bedding() { std::cout << "小猫咪,请卧倒" << std::endl; }

  void Cat_Roll() { std::cout << "小猫咪,请打滚" << std::endl; }
};

class Target {
 public:
  virtual void Bedding()=0;  // 外部符号
  virtual void Roll()=0;
};

class adpter_cat : public Target {
 public:
  adpter_cat(CAT* c) : cat_(c) {}
  void Bedding() { cat_->Cat_Bedding(); }
  void Roll() { cat_->Cat_Roll(); }

 private:
  CAT* cat_;
};

class adpter_dog : public Target {
 public:
  adpter_dog(DOG* d) : dog_(d) {}
  void Bedding() { dog_->Dog_Bedding(); }
  void Roll() { dog_->Dog_Roll(); }

 private:
  DOG* dog_;
};

main.cc

// #include "Adpter_cat.h"
// #include "Adpter_dog.h"
// #include "cat.h"
// #include "dog.h"

#include "adpter.h"

int main() {
  CAT* cat = new CAT();
  DOG* dog = new DOG();
  adpter_cat ac(cat);
  adpter_dog ad(dog);

  ac.Bedding();
  ac.Roll();
  ad.Bedding();
  ad.Roll();
}

运行结果

小猫咪,请卧倒
小猫咪,请打滚
小狗子,请卧倒
小狗子,请打滚
C++适配器模式详解:原理、实现与应用场景 适配器模式作为 C++ 中重要的结构型设计模式,核心价值在于通过封装转换层解决接口不兼容问题,无论是类适配器的继承实现还是对象适配器的组合方式,都为系统集成提供了灵活方案。对于开发者而言,掌握它不仅是理解“接口适配”这一设计思想,更是培养代码抽象能力的过程。学习建议:设计模式的掌握始于理解而非背诵,建议结合实际项目场景(如第三方库集成、legacy 系统重构)动手实践,关注模式背后的设计原则(如开闭原则、单一职责),让设计模式真正成为解决复杂问题的利器。 阅读详情

相关推荐

【C++设计模式】Adapter 适配器模式详解

适配器模式概述 、适配器模式结构与实现 、适配器模式的应用实例:篮球翻译适配器 、适配器模式的适用场景 、适配器模式的优缺点

ZY-JIMMY 1838

C++之适配器(Adapter)模式

0. 简介 适配器模式是一种结构型设计模式, 它能将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。 根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。他和装饰器模式一样可以动态扩展一些遗留或者不好改动的代码。 1. 适配器模式结构 1.1 对象适配器 实现时使用了构成原则: 适配器实现了其中一个对象的接口, 并对另一

lovely_yoshino的博客 8228

45、C++ 适配器模式详解

本文深入探讨了C++中的适配器模式,涵盖函数适配器、std::bind、编译时适配器等多种实现方式,并通过丰富示例展示了其在多线程安全、接口转换、模板参数匹配等场景的应用。文章还比较了不同适配方式的优缺点,分析了模板别名的局限性,并介绍了适配器与装饰器模式的结合使用,帮助开发者提升代码灵活性与可维护性。

day7的博客 109

C++设计模式之适配器模式(adapter)(结构型)

一、结构型模式概述 结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。 结构型模式可以分为类结构型模式和对象结构型模式: •类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。 ...

janeqi1987的专栏 2074

C++适配器模式详解--设计模式(4)

Adapter模式来源:     在实际应用中,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。生活中笔记本电脑和手机等数码产品的充电器就是一个适配器,将家用220V的交流电转换为笔记本或手机正常工作所需的目标电压和电流。适配器起到一种转换和包装的作用。Adapter模式作用:     Adapter设计模式主要目的组合两个不...

程序猿老樊的博客 1224

40、C++设计模式:适配器模式与单例模式详解

本文深入探讨了 C++ 中两种常用的设计模式:适配器模式和单例模式。详细分析了适配器模式的多种实现方式,包括私有继承、关联以及作为包装类的使用,并通过数据库访问示例展示了其在实际开发中的应用。同时,文章对比了单例模式的简单实现与成对类实现方式,讨论了它们的优缺点及适用场景,特别是针对单例生命周期管理和线程安全问题进行了深入剖析。最后,总结了设计模式在提升代码可维护性、可扩展性和复用性方面的重要性,并为读者提供了选择合适设计模式的指导建议。

aa123的博客 65

设计模式C++实现15:适配器模式(Adapter)

设计模式C++实现15:适配器模式(Adapter)

319

【CADARXC++】ObjectArx2023 C++ CAD二次开发环境配置笔记

从官网或第三方平台下载以下AUtoCAD2023、VisualStudio2019和ObjectArx2023安装时请注意安装顺序。

BIMCATIA的博客 1789

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

23种设计模式(C++)之 适配器(Adapter)模式23种设计模式(C++)之 适配器(Adapter)模式意图 23种设计模式(C++)之 适配器(Adapter)模式 意图 用于将一个类的接口转化成客户希望的另外一个接口。A ...

u012409346的博客 327

SAP农产品增值税进项税解决方案

(三)购进农产品用于生产经营且不构成货物实体的(包括包装物、辅助材料、燃料、低值易耗品等),用于生产适用13%税率货物的扣除率为10%,用于生产适用9%税率货物的扣除率为9%。具体计算公式为: 当期允许抵扣农产品增值税进项税额=当期耗用农产品数量×农产品平均购买单价×扣除率/(1+9%)

weixin_44228539的博客 1196

基于WebGL架构的3D可视化平台—平面图导航(一)

前言 利用CampusBuilder来搭建自己的虚拟世界过程有这样一个问题:如何快速聚焦到虚拟场景的某一位置。当然我们可以创建几个按钮对应查找我们需要去的位置(参照物)并聚焦,但是按钮并不是很炫酷也不能很好的反馈给我们一些信息。接下来我们就用平面导航图来解决这一问题。 第一步:使用CampusBuilder搭建模拟场景,CampusBuilder操作简单,分分钟就可以上手。 ...

nioooom的博客 4163

C++设计模式之适配器模式详解

适配器模式(Adapter Pattern)是一种结构型设计模式,它能使接口不兼容的类能够相互合作。这种模式通过将一个类的接口转换成客户端期望的另一个接口,解决了因接口不匹配而导致的类无法一起工作的问题。

weixin_38834817的博客 364

IEC 62056协议栈深度拆解:从物理层握手到应用层AARQ,一次完整的DLMS通讯抓包分析

本文深入解析IEC 62056协议栈(DLMS/COSEM)的全流程通信机制,从物理层握手到应用层AARQ建立,提供详细的抓包分析和实战指南。涵盖RS-485配置、HDLC帧解析、OBIS编码解读等核心内容,并附有常见故障排查技巧,助力开发者高效实现电能表数据采集。

weixin_29182481的博客 312

C++适配器模式实战:类适配器与对象适配器详解与应用

在软件工程中,设计模式是解决常见问题的可复用方案,其中适配器模式专门处理接口不兼容问题。其核心原理是通过一个中间层(适配器)转换接口,使原本无法协同工作的类能够一起工作,体现了封装与抽象的设计思想。该模式的技术价值在于提升代码的复用性、降低模块间耦合度,并遵循开闭原则,使系统更易于维护和扩展。在实际应用场景中,适配器模式常用于集成第三方库、适配遗留代码、数据格式转换以及单元测试中的模拟对象注入。本文通过C++中的具体实现,深入探讨了类适配器和对象适配器两种路径,并结合智能指针、模板等现代C++特性,展示了如

weixin_29219189的博客 319

别再死磕MuJoCo了!用PyBullet+Stable-Baselines3搞定机械臂强化学习(保姆级环境配置)

本文详细介绍了如何使用PyBullet和Stable-Baselines3构建机械臂强化学习系统,绕过昂贵的MuJoCo许可壁垒。通过实战指南,包括环境配置、机械臂Gym环境构建、训练策略与调优技巧,帮助开发者快速掌握机器人强化学习技术,提升智能控制效率。

weixin_42667269的博客 265

改进yolov8|BackBone改进:PWConv、FasterNeXt替换yolov8主干网络

各位哥哥姐姐弟弟妹妹大家好,我是干饭王刘姐,主业干饭,主业2.0计算机研究生在读。和我一起来改进yolov8变身计算机大牛吧!本文中的论文笔记都是刘姐亲自整理,原创整理哦~

weixin_44379985的博客 749

C++设计模式 - 适配器模式详解

适配器模式:讲一个类的接口转换成客户期待的另一个接口,从而从根本上解决两个类无法在一起工作的情况。 最近在做一个任务管理的项目,那么任务管理就应该有任务的基本属性进行配置、修改、获取属性信息等基本操作。咱们主要查看任务的基本信息的获取这部分内容。 首先定义一个任务信息获取的接口类: //定义信息基类 class IInfo { public: IInfo(); ~IInfo(); //获...

wb175208的专栏 733

使用 MATLAB/Simulink 构建一个电机-液压联合控制系统的仿真模型

本文详细介绍了基于Simulink的电机与液压执行机构联合控制系统建模方法。通过7个步骤,系统讲解了从创建项目、搭建PMSM电机模型、建立逆变器与矢量控制模块,到构建液压泵和执行机构模型的完整过程。重点展示了如何设置关键参数、添加测量反馈模块,并提供了实用的代码片段。教程还包含仿真运行流程、结果分析指标及进阶建议,帮助读者掌握多物理场耦合系统建模的核心技术。该方法适用于机电液一体化系统设计,为工程实践提供有效参考。

amy_mhd的博客 613

适配器模式详解:原理、C++代码实现、结构图、场景及优缺点

适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。这可以让原本由于接口不兼容而不能在一起工作的类能够协同工作。适配器模式通常包括三个角色:目标接口(Target)、适配器(Adapter)和被适配者(Adaptee)。在上面的示例中,Target是目标接口,Adaptee是被适配者,Adapter是适配器。适配器Adapter实现了目标接口Target,并持有一个被适配者Adaptee的实例。

十年以上编程经验的干货分享 1622

基于Simulink的电机热阻模型建立与仿真

本文详细介绍了基于Simulink的电机热阻模型建立方法。通过将电机传热路径分解为5段关键热阻(绕组内部、槽绝缘、铁芯、机壳、冷却系统),采用Simscape Thermal模块构建热阻网络模型。重点阐述了参数化热阻计算、实验数据校准、不同设计方案对比等关键步骤,并以15kW车用PMSM为例演示建模过程。文章还分享了非线性热阻处理、多维网络构建等高级技巧,指出该模型在热设计迭代、散热匹配、故障诊断等方面的重要工程价值,为电机热安全设计提供了有效的数字化解决方案。

xiaoheshang_123的博客 337

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++适配器模式:核心概念与四种实用变体详解

适配器模式是结构型设计模式的典型代表,其核心原理是通过中间层转换解决接口不兼容问题。在C++开发中,该模式通过编译时模板特化或运行时多态等机制,实现不同组件间的无缝协作。从工程实践角度看,适配器模式能有效降低系统耦合度,特别适用于第三方库集成、跨平台开发等场景。现代C++中的模板元编程、类型擦除等技术进一步扩展了适配器的应用边界,如STL风格的函数对象适配器可完美兼容标准算法库。本文重点解析模板适配器、多态适配器、函数对象适配器和代理适配器四种典型变体,结合文件操作、数据库驱动等真实案例,展示如何根据性能需

weixin_33326218的博客 223

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

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

C++适配器模式实现与应用详解

适配器模式是结构型设计模式的核心概念之一,通过接口转换实现不兼容组件间的协同工作。其核心原理是创建一个中间层,将目标接口转换为被适配者接口。在C++中,这种模式特别有价值,因为可以利用多重继承、模板元编程等语言特性实现零开销抽象。技术实现上可分为对象适配器(组合方式)和类适配器(继承方式),前者更灵活,后者更高效。典型应用场景包括整合第三方库、桥接新旧系统、统一异构接口等。通过模板化适配器和智能指针适配器等现代C++技术,开发者可以在保持类型安全的同时实现高效的接口转换。特别是在处理图形库封装、日志系统统一

weixin_27061475的博客 113

Statistics and Machine Learning Toolbox

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++适配器模式详解:接口转换与系统集成实战

适配器模式是结构型设计模式的核心成员,通过接口转换解决组件协作难题。其核心原理是构建中间转换层,在不修改原有代码的前提下实现接口兼容。在C++开发中,适配器模式特别适合处理第三方库集成、遗留系统改造等场景,能有效降低模块间的耦合度。标准库中的stack/queue容器适配器、反向迭代器等都是经典实现案例。现代C++特性如lambda表达式、可变参数模板等可以大幅简化适配器实现,而结合智能指针的内存管理策略能规避常见陷阱。从工程实践角度看,适配器模式与工厂模式、观察者模式的组合使用,能够构建出更灵活的系统架构

weixin_32183107的博客 265

C++适配器模式详解:接口转换与实战应用

设计模式是软件工程中经过反复验证的经典解决方案,其中适配器模式专注于解决系统间接口不兼容的难题。其核心原理是在客户端与既有类之间引入一个中间转换层,将不匹配的接口翻译成调用方期望的形态,从而让原本无法协作的组件能够无缝配合。在C++工程实践中,由于语言缺少强制接口规范、项目生命周期普遍较长,且第三方库接口风格各异,适配器模式成为降低模块耦合、控制变动范围的重要工具。对象适配器与类适配器是两种典型实现,前者基于组合,灵活度更高,后者利用多重继承,适用于简单场景。实际应用中,适配器模式常被用于传感器接口统一、旧

weixin_33508411的博客 253
上一篇: 状态模式C++详解
下一篇: 机器人学运动模型
黑猫爱小鹿
博客等级 码龄8年 1万+粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值