23种设计模式之(八)适配器模式(python_c++实现)

Python设计模式:从代码复用到系统架构的实践指南 设计模式不是银弹,而是帮助我们写出更清晰、更易维护代码的工具。在Python世界中,应充分发挥语言特性,避免生搬硬套。好的设计模式实现应该像“隐形”的基础设施——存在却不引人注意,默默支撑着系统的稳定运行。 阅读详情

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

本文主要介绍23种设计模式之适配器模式,附详细python/c++示例代码。
- 概念
- 应用场景
- 注意事项
- 代码示例
- 总结
- 代码链接


适配器模式(Adapter)

概念

适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。

GoF对适配器模式的定义是:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

应用场景

(1)想要使用一个已经存在的类,但是它却不符合现有的接口规范,导致无法直接去访问,这时创建一个适配器就能间接去访问这个类中的方法。

(2)我们有一个类,想将其设计为可重用的类(可被多处访问),我们可以创建适配器来将这个类来适配其他没有提供合适接口的类。

(3)想要使用接口中的某个或某些方法,但是接口中有太多方法,我们要使用时必须实现接口并实现其中的所有方法,可以使用抽象类来实现接口,并不对方法进行实现(仅置空),然后我们再继承这个抽象类来通过重写想用的方法的方式来实现。这个抽象类就是适配器。

代码示例

C++代码示例

/************************************************************************/
/* 设计模式专题
/*
/* 适配器模式
/*
/* Author  : zzl
/*
/* 编程环境: window10 vs2010
/*
/* Date    : 20180915
/************************************************************************/

#include <iostream>

// Current18 
// Current220
// Adapter 

class  Current18v
{
public:
    virtual void useCurrent18v() = 0;
};

class  Current220v
{
public:
    void useCurrent220v()
    {
        printf("i am 220v,welcome to use\n");
    }
};

class Adapter : public Current18v
{
public:
    Adapter(Current220v *current)
    {
        m_current = current;
    }
    virtual void useCurrent18v()
    {
        printf("i am 18v adpter , i can adpte 220v \n");
        m_current->useCurrent220v();
    }
private:
    Current220v *m_current;
};


void main()
{
    Current220v     *current220v = NULL;
    Adapter         *adapter = NULL;

    current220v = new Current220v;
    adapter = new Adapter(current220v);
    adapter->useCurrent18v();

    delete current220v ;
    delete adapter;
}

python代码示例

# -*- coding: utf-8 -*-
###################################################################
# 设计模式专题
# 
# 适配器模式
# 
# Author  : zzl
# 
# 编程环境: window10 python2.7
# 
# Date    : 20180915
##################################################################

# Current18
# Current220
# Adapter

class Current18v(object):
    def use_current18v(self):
        pass


class Current220v(object):
    def use_current220v(self):
        print("i am 220v,welcome to use\n")


class Adapter(Current18v):
    def __init__(self, current):
        self.m_current = current

    def use_current18v(self):
        print("i am 18v adpter , i can adpte 220v")
        self.m_current.use_current220v()


if __name__ == "__main__":
    current220v = Current220v()
    adapter = Adapter(current220v)
    adapter.use_current18v()


源码链接

设计模式(八)适配器模式示例代码(python–c++)

设计模式全解析:Python、C++、C语言三语言实现对比 本文全面解析23种经典设计模式,通过Python、C++、C三种语言实现对比。设计模式分为创建型(如工厂方法、单例)、结构型(如适配器、装饰器)和行为型(如观察者、策略)三大类,为软件开发提供可重用解决方案。文章详细展示了各模式的核心思想、应用场景和多语言实现代码,帮助开发者理解模式本质并在项目中灵活运用。学习设计模式能提高代码质量、促进团队沟通并降低设计风险,是软件工程师必备的重要知识体系。 阅读详情

相关推荐

14、设计模式在Python中的应用

本文详细介绍了多种设计模式在Python中的应用,涵盖创建型、结构型和行为型模式。通过具体代码示例,展示了单例模式、适配器模式、观察者模式、模板方法模式等常见设计模式的实现方式。此外,还探讨了外观模式、装饰器模式、组合模式等高级模式,并总结了设计模式在构建模块化、可维护软件系统中的重要性。

ol789012的博客 60

23种设计模式之适配器模式(结构型,3 Adapter,c++实现)

代码实现:#include &lt;iostream&gt;using namespace std;class Current220v{public:void useCurrent220v(){cout &lt;&lt; "use current 220 v" &lt;&lt; endl;}};class Current18v{public:virtual void useCurrent18v()...

xyqintj的专栏 261

《Python3案例和总结》-专栏介绍和目录

本专栏专注于Python基础和进阶的系统讲解,逐步深入实际应用场景到python高级特性,让你轻松学会用Python解决各种实际问题。不管是零基础还是有经验的开发,相信都能从本专栏获益。

数据知道的博客 1万+

简单易懂23种设计模式——适配器模式【含C++代码实例】

在做面向对象的软件开发时我们往往想达到更高的代码可复用性和更合理的软件颗粒度。   根据《设计模式——可复用面向对象软件的基础》所说:“你必须找到相关的对象,以适当的颗粒度将他们回归类,再定义类的接口和继承层次,建立对象之间的基本关系。你的设计应该对手头的问题有针对性,同时对将来的问题和需求也要有足够的通用性。”   内行的设计者知道:不是解决任何问题都要从头做起。他们更愿意复用以...

机器人梦想家 Bing Lee 2744

提示词编程的设计模式库构建

提示词编程的设计模式库构建 关键词:提示词编程、设计模式、库构建、代码复用、软件架构 摘要: 本文旨在探讨提示词编程在设计模式库构建中的应用,通过逐步分析提示词编程的原理、设计模式类型及其在实际编程中的实现方法,构建一个高效、易用的设计模式库。文章首先介绍了提示词编程的核心概念和优势,然后分类阐述了常见的23个设计模式,并

AI天才研究院 1050

均匀分布产生高斯分布

均匀分布产生高斯分布 文章目录均匀分布产生高斯分布简介方法和证明代码效果引用 简介 方法和证明 代码 效果 引用

gy_Rick的博客 5317

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

转载地址 https://sscloud.net/solution/jsp/article.jsp?articleId=10090     模式的定义与特点 23种设计模式demo下载 适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合...

724

主流算力卡性能对比分析

超大规模AI训练/HPC:优先选择NVIDIA H100或AMD MI300X,需关注显存带宽和多卡互联能力。企业级AI训练:NVIDIA A100性价比更高,生态成熟。国内自主可控需求:华为昇腾910B是首选,支持液冷和低功耗设计。本地AI推理/游戏:NVIDIA RTX 4090或RTX 5090性价比突出,但需注意显存容量限制。边缘计算/低功耗场景:华为昇腾310或清微智能TX536(能效比6.3TOPS/W@INT8)更合适。

m0_69867914的博客 7799

设计模式之适配器模式实例(c++)

设配器模式: 适配器模式包括类适配器和对象适配器,第一种是利用实现和泛化来实现,第二种是利用泛化和关联或者组合来实现适配器的。 适配器类似于生活中的转换器,将原来不兼容接口和设备通过转换器来达到连接的效果。比如笔记本的电源适配器,将常见的插座接口,通过适配器来连接笔记本的电源口。 设配器模式实例之仿生机器人(类适配器): 仿生机器人类图: 通过类图可以知道,DogAdapter继承D...

Sincky的博客 1355

从零到一:手把手部署用友T3标准版11.2及SQL Server 2008R2环境

本文详细介绍了从零开始部署用友T3标准版11.2及SQL Server 2008R2环境的完整流程,包括环境准备、SQL Server安装、环境检测与修复、T3标准版安装实战以及初始化配置与测试。通过手把手的步骤指导和常见问题解决方案,帮助用户顺利完成部署,确保系统稳定运行。

weixin_28339967的博客 454

别再为环保数采仪通讯发愁!手把手教你用MCGS触摸屏+4G模块发送HJ212报文

本文详细介绍了如何使用MCGS触摸屏配合4G模块高效发送HJ212标准报文,解决工业环保监测中的数据采集与传输难题。从硬件连接到软件配置,再到报文组装与发送策略,提供全流程实用指南,特别针对4G网络环境下的特殊设置给出优化建议,帮助工程师提升数据传输稳定性与效率。

weixin_30847865的博客 389

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

以下内容全部来自传智播客的 设计模式讲义: 3.3适配器模式adapter: Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。 角色及其职责: 适用于: 是将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 案例 #include &lt;iostream&gt;...

qq_15054345的博客 247

Sigrity IBIS建模实战:如何用T2B工具快速转换SPICE模型(附避坑指南)

本文详细介绍了如何使用Sigrity T2B工具将SPICE模型高效转换为IBIS模型,涵盖从环境配置、模型预处理到转换流程和验证策略的全过程。通过实战案例和避坑指南,帮助硬件工程师掌握高速电路设计中的IBIS建模技术,提升信号完整性分析效率。

weixin_29243279的博客 395

【23种设计模式】模式背后运用的技术对照

本文详细介绍了软件设计中的三大类设计模式:结构型模式、创建型模式和行为型模式。结构型模式包括适配器、桥接、组合、装饰器、外观、享元和代理模式,用于处理类或对象之间的组合关系。创建型模式涵盖单例、工厂方法、抽象工厂、建造者和原型模式,专注于对象的创建机制。行为型模式涉及策略、模板方法、观察者、迭代器、责任链、命令、备忘录和状态模式,主要处理对象之间的职责分配和通信。每种模式都提供了技术要点和相关技术的应用示例,帮助开发者理解和应用这些设计模式以构建灵活、可维护的软件系统。

键盘爱好者 1368

在MacBook M1/M2上,手把手教你打包包含嵌入模型的RagFlow Docker镜像(避坑指南)

本文详细指导如何在MacBook M1/M2上构建ARM64架构的RagFlow Docker镜像,涵盖环境准备、依赖处理、镜像构建及性能优化全流程。特别针对Apple Silicon芯片的兼容性问题提供解决方案,帮助开发者高效完成本地开发环境搭建。

weixin_26908317的博客 242

从PX4的FRD到Mavros的FLU:手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点

本文详细解析了PX4的FRD与Mavros的FLU坐标系转换问题,手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点。通过实战指南和常见错误排查,帮助开发者避免方向错乱问题,提升无人机控制精度。

weixin_33712987的博客 422

23种设计模式教程目录

本教程系统性地介绍GoF(Gang of Four)提出的23种经典设计模式,从基础理论到实际应用,构建完整的设计模式知识体系。教程面向软件开发人员、架构师和计算机专业学生,通过理论讲解、代码实现、UML图解和实战案例,帮助读者深入理解和熟练运用设计模式。适用人群:学习收益:掌握设计模式基础理论,理解面向对象设计原则学习三大类设计模式,通过代码实践加深理解掌握复杂模式的应用场景和组合使用能够在实际项目中灵活运用设计模式解决复杂问题建议学习节奏:

wyl703的博客 993

OPPO 数据分析面试题及参考答案

如何设计共享单车数据库的各个字段? 对于共享单车的数据库设计,首先考虑用户相关的字段。用户表可以包含用户 ID,这是一个唯一标识符,用于区分不同用户;姓名,记录用户的真实姓名;联系方式,比如手机号码,方便在出现问题时联系用户;注册时间,记录用户何时开始使用共享单车服务;信用分数,用于衡量用户使用共享单车过程中的行为是否合规,比如是否按时归还车辆等。 车辆信息表要有车辆 ID,这是车辆的唯一标识;车辆类型,例如普通单车、电动单车等;投放时间,即车辆投放到市场的时间;车辆状态,包括是否可用(如正

大模型大数据攻城狮的专栏 1186

适配器模式_结构型_GOF23

适配器模式

C/C++ 422

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

大话设计模式_设计模式Python版系列介绍:1、设计模式简介、类型、原则

今天开始准备写一个设计模式系列的Python版本,网上有很多Java、C++版本的,Python版本的相对来说比较零散,从今天开始,我会系统的介绍每个设计模式的Python实现。首先介绍一下什么是设计模式(Design Pattern):一句话解释一下:设计模式是面向对象编程时,如何定义类与类、类与对象、类与方法的各种组合方式的经验实践,都是前人的经验!通过在合适的场景下,选择合适的设计模式,对我...

weixin_39681644的博客 121

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

设计模式 可复用面向对象软件的基础_设计模式导言【Python篇】

喜欢就关注我们吧!设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。从设计模式的定义就不难得出一个结论,设计模式是一个值得我们去深入学习并且掌握的东西。学习设计模式除了对我们的编码能力有提升外,也能够帮助我们在面试中脱...

weixin_39563132的博客 113

MVC框架跟设计模式的区别

有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式。实际上它们完全是不同的概念。 [7]  框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便...

qq_37430357的博客 365

C/C++ 知识点-设计模式总结(C++和Python实现)

GoF的23种设计模式,包括创建型、结构型和行为型,其涵盖了面向对象思想的精髓以及诸多细节。本文结合《设计模式》和《大话设计模式》,并用C++和Python实现了《大话设计模式》中的23种模式案例。案例实现《大话设计模式》C++版《大话设计模式》Python版抽象工厂模式:提供一个创建一系列相关或互相依赖对象的接口,只需要知道对象的系列,无需知道具体的对象。在客户端中,具体工厂类只在初始化时出现一次,更改产品系列即可使用不同产品配置。...

m0_58687318的博客 367

python与建筑结构设计_设计模式总结(C++和Python实现)

Design Patterns前言GoF的23种设计模式,包括创建型、结构型和行为型,其涵盖了面向对象思想的精髓以及诸多细节。本文结合《设计模式》和《大话设计模式》,并用C++和Python实现了《大话设计模式》中的23种模式案例。原文首发于个人博客Jennica.Space。案例实现创建型模式工厂方法模式(Factory Method)工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪...

weixin_39963744的博客 462

《大话设计模式》Python 版代码实现

From:http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html 一、简单工厂模式 模式特点:工厂根据条件产生不同功能的类。 程序实例:四则运算计算器,根据用户的输入产生相应的运算类,用这个运算类处理具体的运算。 代码特点:C/C++中的switch...case...分支使用字典的方...

freeking101的博客 3953

大话设计模式--Python

作者:五岳出处:http://www.cnblogs.com/wuyuegb2312 上一周把《大话设计模式》看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多、偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼界。《大话设计模式》的代码使用C#写成的,而在本人接触到的面向对象语言中,只对C++和Python还算了解,为了加深对各个模式的理解,我在网上下载了一个C++版的源代码,并...

weixin_30389003的博客 205
上一篇: 23种设计模式之(七)装饰模式(python_c++实现)
下一篇: 23种设计模式之(九)组合模式(python_c++实现)
zzl_python
博客等级 码龄8年 21粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值