C++设计模式之适配器模式(六)

设计模式C++实现(3)——适配器模式 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大 阅读详情

adapter pattern

简介

  适配器模式(adapter pattern)是一种结构型模型,会将一种接口转换为另一种需要的接口,以便使用。适配器模式有两种,一是类模式适配器;另一种是对象模式适配器。
类模式适配器:
在这里插入图片描述

对象模式适配器:
在这里插入图片描述
  优点: 1. 屏蔽具体实现的方法,实现了依赖倒转;2.把不方便使用的接口转换为统一接口,方便使用。

代码

class Target {
public:
    Target() = default;
    virtual ~Target() = default;

    virtual std::string get_name();
}; // Target

class Adaptee{
public:
    std::string get_person_name();
}; //Adaptee

// 类适配器
class AdapterClass: public Target, private Adaptee{
public:
    AdapterClass(std::string name);
    std::string get_name();
private:
    std::string name_;
}; // AdapterClass

// 对象适配器
class AdapterObject: public Target{
public:
    AdapterObject(std::shared_ptr<Adaptee> adaptee, std::string &name);
    std::string get_name();
private:
    std::shared_ptr<Adaptee> adaptee_;
    std::string name_;
}; // AdapterObject


std::string Target::get_name() {
    return "None";
}

std::string Adaptee::get_person_name() {
    return "person: ";
}

AdapterClass::AdapterClass(std::string name)
    : name_(std::move(name)){
}

std::string AdapterClass::get_name() {
    return this->get_person_name() + this->name_;
}

AdapterObject::AdapterObject(std::shared_ptr<patterns::Adaptee> adaptee,
        std::string &name)
    : adaptee_(std::move(adaptee)), name_(name){

}

std::string AdapterObject::get_name() {
    return adaptee_->get_person_name() + this->name_;
}

int main(){
    std::string name = "test";
    // 类适配器模式
    std::shared_ptr<AdapterClass> adapter_class =
            std::make_shared<AdapterClass>(name);
    std::string output = adapter_class->get_name();
    std::cout << "adapter class->" << output << std::endl;

	// 对象适配器模式
    std::shared_ptr<Adaptee> adaptee = std::make_shared<Adaptee>();
    std::shared_ptr<AdapterObject> adapter_object =
            std::make_shared<AdapterObject>(adaptee, name);
    output = adapter_object->get_name();
    std::cout << "adapter object->" << output << std::endl;
	return 0;
}
突破编程_C++_设计模式(适配器模式) C++ 设计模式:适配器模式 阅读详情

相关推荐

C++ 适配器模式

适配器模式(Adapter Pattern)是一种补救模式,将一个类的接口转换成客户希望的另外一个接口,从而使原本由于接口不兼容而不能一起工作的类可以一起工作。

青春不老,奋斗不止! 1万+

C++设计模式之工厂模式(三)

目录简单工厂模式简介说明code工厂方法模式简介说明code抽象工厂模式简介说明code   工厂模式属于创建型模式,可分为三类,简单工厂模式、工厂方法模式、抽象工厂模式;这三类模式是由易到难,由简到繁的。下面简单阐述一下这三种工厂模式 简单工厂模式 简介说明   简单工厂模式是工厂模式中最简单的一类;它是一个工厂生产多种不同的产品;对外隐藏类产品的实现细节,只暴露需要的产品类型。客户提供需要产品的产品类型给到工厂,就会返回相应的产品。客户只需要关心产品的基类类,不需要知道获取到的是哪一个子类。   使用场

CFH1021的博客 414

CIC-IDS-2018数据集高效预处理实战:从数据清洗到特征整合

本文详细介绍了CIC-IDS-2018数据集的高效预处理方法,从数据清洗到特征整合的全流程实战。通过内存优化、异常值处理和特征工程等技巧,帮助网络安全研究人员快速处理大规模网络流量数据,提升机器学习模型的训练效率和准确率。特别针对特征数据的预处理提供了实用代码示例和优化建议。

weixin_29274969的博客 502

C++设计模式之外观模式(十)

Facade Pattern简介代码 简介   外观模式(Facade Pattern)属于结构型模式,它隐藏了系统的复杂性,并向客户提供一个可以访问系统的接口。为子系统中的一组接口提供了一个统一的访问接口,这样使得子系统更加容易的被使用或者访问。 使用场景: 为了一个复杂的模块或子系统提供统一的外界访问接口; 子系统相对独立,外界对子系统的访问属于黑盒操作; UML图: 代码 #include <iostream> #include <memory> class SubSy

CFH1021的博客 197

最新小旋风蜘蛛池X6.21解密版+绕过授权带教程

介绍: 1.站群管理:用你的域名在这里添加网站 2.站点优化:站点互链,内容优化 2.系统设置:开启蜘蛛池 3.采集管理(可开启自动采集) 4.缓存设置:推荐开启tkd缓存 其他的用户根据自己的实际情况后台进行配置,通常以下: 1.后台首页(这里显示系统的大致概况) 2.系统设置:蜘蛛池的基本设置(访问开关、跳转、统计等等) 3.站群管理: 1.网站管理(用你的域名在这里添加网站) 2.模型管理(可构建不同类型站点:电影、文章、论坛等等) 3.TKDB调用模板(即:title、keywords、descri

百度SEO程序下载 2937

秋叶ComfyUI-v10中文整合包:全中文AI绘画一键部署与实战指南

Stable Diffusion作为当前主流的扩散模型,通过去噪过程从随机噪声生成高质量图像,其开源特性推动了AI绘画技术的普及。然而,其官方WebUI在自定义工作流和可复现性上存在局限,而基于节点流程的ComfyUI则提供了更高的自由度和工程化控制能力,尤其适合复杂、可重复的创作流程。对于中文用户而言,英文界面和提示词输入是主要障碍。秋叶出品的ComfyUI-v10中文整合包,正是针对这一痛点,提供了**全中文界面**和**原生中文提示词支持**的解决方案。该整合包将Python环境、依赖库及常用插件预配

weixin_33895475的博客 401

[学习][笔记]设计模式(基于C/C++实现)<六>适配器模式

文章目录适配器模式定义使用场景基本思路实例总结 适配器模式 定义 使用场景 基本思路 实例 总结

二次元怪兽的博客 382

论文理解【LLM-OR】——【Step-Opt】Training LLMs for Optimization Modeling via Iterative Data Synthesis and

本文提出 Step-Opt-Instruct 方法,针对用 LLM 做 OR 问题求解任务,用迭代问题生成 + 分步验证机制实习更可靠的训练数据合成,从而微调开源 LLM 得到 Step-Opt。在多个 OR 建模基准提升性能,尤其在复杂问题上提升更明显

佚失的诗篇 806

c++设计模式学习笔记--六、结构型模式--B、适配器模式,Adapter

kiwen_su的博客 184

Linux实战:rMATS可变剪切分析从零到一,避坑指南与结果深度解析

本文详细介绍了在Linux系统上从零开始部署rMATS进行可变剪切分析的完整流程,包括环境搭建、安装避坑指南、参数优化及结果解读。特别针对gfortran依赖、数学库配置等常见问题提供解决方案,并深入解析JC与JCEC结果的差异及可视化技巧,帮助生物信息学研究者高效完成可变剪切分析。

weixin_30394669的博客 410

用PyTorch复现经典:手把手教你用Double DQN训练AI玩转打砖块(附完整代码与调参心得)

本文详细介绍了如何使用PyTorch实现Double DQN算法,训练AI智能体玩转经典雅达利游戏Breakout(打砖块)。从环境配置、帧预处理到网络架构设计和经验回放机制,全面解析了强化学习在游戏AI中的应用。文章还提供了关键调参技巧和实战优化方案,帮助开发者快速掌握Double DQN的核心实现与性能优化方法。

weixin_30596165的博客 229

设计模式之适配器模式,以C++为例。

今天来盘一盘适配器模式。适配器:顾名思义,就是让原本不合适的变为合适的,好似一对男女,没有中间的媒婆是不会互相了解的,好像不太恰当,就这么解释吧,只有有了这个中间人他们才会产生联系,进而相互了解、恋人、深入、结婚,咳咳,没有ghs哦,哈哈哈。

Bobowen的博客 1510

杰理JL7033C芯片运行SoundFont音色库教程

本教程介绍如何在杰理JL7033C芯片上移植TinySoundFont音色库,实现MIDI播放功能。关键步骤包括:获取TinySoundFont开源代码,创建音色库声音播放数据流,封装核心功能文件。硬件需配备外部PSRAM和NOR FLASH存储音色库,软件使用杰理SDK和工具链。移植后系统可支持40个voice,满足MIDI播放和电子琴演奏需求。教程详细说明了代码移植过程,包括音色库文件处理、内存配置和音频流水线设置。

qq_42014563的博客 611

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

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

junxuezheng的博客 2051

贝叶斯(Bayes)决策理论

在博文【模式识别PR和模式的概念】介绍了相关的模式识别与模式的概念。在本节描述所要讨论的问题之前,再提一下对于待识别的物理对象的描述问题。假设一个待识别的物理对象用其d个属性观察值描述,称之为d个特征,这组成一个d维的特征向量,而这d维待征所有可能的取值范围则组成了一个d维的特征空间。一般地,机器实现自动分类有两大类方法:一种是模板匹配方法,另一种是对特征空间划分为子空间(每类的势力范围)的方法。

松子茶的专栏 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C++常用的11种设计模式解释及示例

c++常用的设计模式包括单例模式、工厂模式、抽象工厂模式、适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式、观察者模式和命令模式等。 使用设计模式的好处:提高代码的可读性和可维护性;将常见的设计问题隔离程序的业务逻辑;重用已有的实现;消除重复代码;消除手动调整代码以达到正确逻辑的所有痛苦。

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 7983

lwip-2.0.3

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

【C++】适配器模式

适配器模式(Adapter Pattern)是一种【结构型】设计模式,用于解决接口不兼容的问题。当两个原本不兼容的类需要协同工作时,适配器模式通过创建一个中间层(适配器)来转换接口,使它们能够无缝协作。这种模式在遗留系统集成、第三方库对接等场景中尤为常见。

AAADiao的博客 1275

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

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

目标接口(Target):定义客户需要的接口。适配者类(Adaptee):定义一个已经存在的接口,这个接口需要适配。适配器类(Adapter):实现目标接口,并通过组合或继承的方式调用适配者类中的方法,从而实现目标接口。适配器模式的优点主要包括:(1)提高类的透明性和复用性: 适配器模式可以让类在现有的基础上进行复用,而不需要做出任何改变,这有助于避免大规模改写现有代码。(2)解耦目标类和适配器类: 通过使用适配器模式,目标类和适配器类可以实现解耦,从而提高程序的扩展性。

hzdxyh的博客 1652

设计模式——适配器模式

● 适配器模式是将某个类的接口转化成客户端需要的另一个接口表示,主要的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)● 适配器模式属于结构型模式● 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式①、可以让任何两个没有关联的类一起运行。②、提高了类的复用。③、增加了类的透明度。④、灵活性好。①、过多地使用适配器,会让系统非常凌乱,不易整体进行把握。

程序猿进阶 1994

C++设计模式结构型模式———适配器模式

适配器模式在软件开发中使用得比较广泛,但并不是总是最佳选择。过多地使用适配器模式可能会导致混淆,因为从外部看调用的是 A 接口,但内部却适配成了 B 接口。这种情况在项目后期重构时通常更常见,因此在可能的情况下,重构代码可能比使用适配器更好。然而,在软件开发中,发布新版本时常常会面临与旧版本的兼容性问题。完全抛弃旧版本并不现实,因此适配器模式可以帮助实现新旧版本的兼容。尤其在遗留代码的复用和类库迁移等方面,适配器模式发挥了重要作用。

无敌岩雀的博客 2369

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

小明购买了一台新电脑,该电脑使用 TypeC 接口,他已经有了一个USB接口的充电器和数据线,为了确保新电脑可以使用现有的USB接口充电器和数据线,他购买了一个TypeC到USB的扩展坞。请你使用适配器模式设计并实现这个扩展坞系统,确保小明的新电脑既可以通过扩展坞使用现有的USB接口充电线和数据线,也可以使用TypeC接口充电。(可以把适配器模式理解成拓展坞,起到转接的作⽤,原有的接⼝是USB,但是客户端需要使⽤type-c , 便使⽤拓展坞提供⼀个type-c 接⼝给客户端使⽤)方法一为普通的直接调用;

K1_uestc的博客 1899

C++设计模式——适配器模式(adapter pattern)

一、原理讲解 适配器模式别名为包装器(wrapper),分为类适配器(通过多继承实现)、对象适配器(组合方式实现),由于类适配器比较少用,本文主要讲解用的比较多的对象适配器。 1.1意图 将一个类的接口转换成客户希望的另一个接口。Adapter使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 1.2应用场景 你想使用一个已经存在的类,而它的接口不符合你的需求; 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作; (适用于对象Adapter)

净无邪博客 1261

【设计模式】如何用C++实现适配器模式

实际上,我们很多的理念都源于一些简朴的思想,这些思想不一定高深,但是在保证代码质量,实现高内聚低耦合的设计思想上也许有所益处。

zhangjiuding的博客 1347

设计模式回顾——适配器模式(C++)

适配器(Adapter )模式, 就是将一个类的接口转换成客户期望的另外一个接口,使得原本由于接口不兼容导致不能一起工作的类可以一起工作。

只要思想不滑坡,想法总比问题多。 3837

设计模式:适配器模式 c++实现

文章目录前言一、适配器模式的理解二、c++实现适配器模式总结参考 前言 今天复习了适配器模式,主要是有人问我这个设计模式,突然不知道该怎么说了,尴尬!!! 一、适配器模式的理解 适配器模式,说白了就是由于目标接口与已有接口不一致,但是功能相似,只要对目标接口稍作处理(这里的处理就是适配器工作方式)就可以实现目标功能。 我们知道不同国家的电压可能不同,而生产的电器也不是所有电压都能正常工作,总不能针对不同国家的电压生产专门的电器吧,于是电源适配器就产生了,它的作用就是把不同电压变成电器需要的电压,这就是适

DU_YULIN的博客 1691
上一篇: C++设计模式之原型模式(五)
下一篇: C++设计模式之桥接模式(七)
一杯盐水
博客等级 码龄10年 62粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值