23种设计模式之(十)桥接模式(python_c++实现)

《Python3案例和总结》-专栏介绍和目录 本专栏专注于Python基础和进阶的系统讲解,逐步深入实际应用场景到python高级特性,让你轻松学会用Python解决各种实际问题。不管是零基础还是有经验的开发,相信都能从本专栏获益。 阅读详情

23种设计模式之(十)桥接模式(Bridge)

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


桥接模式(Bridge)

概念

桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。

GoF对桥接模式的定义是:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

应用场景

(1)如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。

(2)对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。

(3)一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。

代码示例

C++代码示例

/************************************************************************/
/* 设计模式专题
/*
/* 桥接模式
/*
/* Author  : zzl
/*
/* 编程环境: window10 vs2010
/*
/* Date    : 20180916
/************************************************************************/

#include <iostream>

class Engine
{
public:
    virtual void InstallEngine() = 0;
};
class Engine4400cc : public Engine
{
public:
    virtual void InstallEngine()
    {
        printf("i am 4400cc engine ,i am installed successful\n");
    }
};


class Engine4500cc : public Engine
{
public:
    virtual void InstallEngine()
    {
        printf("i am 4500cc engine ,i am installed successful\n");
    }
};


class Car
{
public:
    Car(Engine *engine)
    {
        this->m_engine = engine;
    }
    virtual void installEngine() = 0;

protected:
    Engine *m_engine;
};

class WBM5 : public Car
{
public:
    WBM5(Engine *engine) : Car(engine)
    {
        ;
    }

    virtual void installEngine()
    {
        printf("i am WBM5 \n");
        m_engine->InstallEngine();
    }
};

class WBM6 : public Car
{
public:
    WBM6(Engine *engine) : Car(engine)
    {
        ;
    }

    virtual void installEngine()
    {
        printf("i am WBM6 \n");
        m_engine->InstallEngine();
    }
};

void main()
{
    //
    Engine  *engine = NULL;
    WBM6    *wbm6 = NULL;
    WBM5    *wbm5 = NULL;

    engine = new Engine4400cc;

    wbm6 = new WBM6(engine);
    wbm6->installEngine();

    wbm5 = new WBM5(engine);
    wbm5->installEngine();

    delete wbm6;
    delete wbm5;
    delete engine;



}

python代码示例

# -*- coding: utf-8 -*-
###################################################################
# 设计模式专题
# 
# 桥接模式
# 
# Author  : zzl
# 
# 编程环境: window10 python2.7
# 
# Date    : 20180916
##################################################################

class Engine(object):
    def install_engine(self):
        pass


class Engine4400cc(Engine):
    def install_engine(self):
        print("i am 4400cc engine ,i am installed successful")


class Engine4500cc(Engine):
    def install_engine(self):
        print("i am 4500cc engine ,i am installed successful")


class Car(object):
    def __init__(self):
        self.m_engine = engine

    def install_engine(self):
        pass


class WBM5(Car):
    def __init__(self, engine):
        self.m_engine = engine

    def install_engine(self):
        print("i am WBM5 ")
        self.m_engine.install_engine()


class WBM6(Car):
    def __init__(self, engine):
        self.m_engine = engine

    def install_engine(self):
        print("i am WBM6 ")
        self.m_engine.install_engine()


if __name__ == "__main__":

    engine = Engine4400cc()

    wbm6 = WBM6(engine)
    wbm6.install_engine();

    wbm5 = WBM5(engine);
    wbm5.install_engine()



源码链接

设计模式(十)组合模式示例代码(python–c++)

PX4算法解析:L1制导律 一、前沿 从今天开始,会陆续为大家解读开源飞控软件px4中使用到的各种算法,今天要讲述的是L1制导律,这是固定翼飞机进行路径跟踪的重要算法之一。这个算法是由MIT的研究人员提出,因为具有比较好的路径跟踪效果而得到广泛应用。在这之前,无人机在进行路径跟踪时一般采用基于侧偏距的PD控制器方法,至于为什么使用PD而不使用PID算法,那是因为位置环响应较慢,所以一般在外环采用PD算法,而在内环采用PID算... 阅读详情

相关推荐

通达信双紫擒龙指标实战指南:从源码解析到精准安装

本文详细解析了通达信双紫擒龙指标的核心逻辑、源码获取与安全验证、安装流程及实战应用技巧。通过紫紫红黄四种颜色信号捕捉趋势转折点,结合MACD、布林通道和成交量加权算法,提升交易准确性。文章还提供了个性化设置、信号解读及常见问题解决方案,帮助投资者高效运用该指标。

weixin_29248611的博客 1050

Python调用C++代码

Python调用C++代码 今天在研究PyTorch中Tensor的一些操作的时候,发现其底层Tensor的操作都是用C++写的,并使用pybind11进行C++和Python的桥接。所以,我就想着探索一下Python中如何调用C++代码? 可行方案 其实,方案还是挺多的: Python内置的ctypes接口(可以将C/C++代码编译为动态库,在Python中进行调用) CFFI(提...

给永远比拿愉快 9013

Vue3 + OpenLayers 开发指南(一) - 环境搭建与基础配置

本文详细介绍了如何从零开始搭建Vue3与OpenLayers的集成开发环境。通过项目初始化、核心依赖安装、目录结构规划及基础配置,手把手引导开发者创建一个结构清晰、可维护的现代化WebGIS应用骨架,为后续添加地图图层和交互功能奠定坚实基础。

weixin_28049429的博客 339

变型桥——桥接模式详解(Python实现)

通过这篇文章,希望读者能够更好地理解桥接模式的概念、结构及其在Python中的实现,并能够在实际开发中灵活应用这种设计模式,让我们的“变型桥”帮助你在开发过程中搭建起灵活多变的系统桥梁!桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化,通过引入一个桥接接口,桥接模式可以让抽象和实现独立扩展,而不需要彼此依赖。桥接模式是一种将抽象部分与它的实现部分分离的结构性设计模式,使它们都可以独立地变化,想象一下,有一座变型桥,它可以连接不同的实现,使得两端可以通过任何类型的实现相连。

Asunqingwen的博客 1181

基于vue2的echarts3D地球

采用vue2+js实现了echarts3D地球的放大、缩小和旋转

qq_44699269的博客 1132

mpu6050原理图_STM32控制 MPU6050 六轴陀螺仪资料汇总

一般使用MPU6050的步骤是先驱动I2C总线,然后初始化MPU6050,从MPU6050读取数据,最后是数据的处理。本文档详细介绍有关MPU6050 三维角度传感器电子陀螺仪使用说明。附件内容提供该 MPU6050模块原理图,配套STM32代码,相关数据手册及参考文档。实物连接图:MPU6050 六轴陀螺仪特点:使用芯片:MPU-6050供电电源:3-5v(内部低压差稳压)通信方式:标...

weixin_39911056的博客 4758

Python桥接模式介绍、使用

在Python中,abc模块提供了一个称为ABC的类和一个称为的装饰器,用于抽象基类(Abstract Base Classes)。抽象基类是一种特殊的类,用于定义接口和规范,并且不能被实例化。ABC是所有抽象基类的基类,它本身不是抽象类。通过继承ABC类可以将普通类变成抽象类。装饰器用于定义抽象方法,这些方法必须由子类实现。在没有实现抽象方法的情况下,子类无法被实例化。使用ABC和可以实现多态和规范化。

captain 1018

工程经验分享:PCIE(1)

本文介绍AXI Bridge For Pcie Express Gen3 Subsystem 的使用方法。这个IP兼具简单与实用性,将PCIE协议层实现于内部,仅留出AXI接口供开发者使用。开发者不需要处理复杂的PCIE协议数据,只需要对AXI总线有所了解即可,十分符合Xilinx一贯的开发风格。本文无关PCIE协议本身,仅分享实用性的工程经验,以PCIE IP为核心,一步一步搭建一个简单的子系统,以此说明用法。文中所有内容均已通过项目检验。

weixin_42415266的博客 3842

【python设计模式】8、桥接模式

通过将抽象部分和实现部分分离开来,桥接模式可以实现抽象部分和实现部分之间的松耦合,从而提高系统的灵活性和可扩展性。具体来说,桥接模式通过将一个类的抽象和它的实现分离,使它们可以独立地变化,从而降低它们之间的耦合性。可维护性:由于桥接模式将抽象部分和实现部分分离开来,因此对于每个部分的修改都不会对另一个部分产生影响,从而降低了代码的复杂性,提高了代码的可维护性。桥接模式:Shape 类充当抽象部分,DrawAPI 类充当实现部分,这两个类通过 Shape 的构造函数进行组合,以实现抽象和实现的分离。

Htojk的博客 1028

【推荐100个unity插件】unity实现交互式火焰 —— Ignis

Ignis是一款Unity互动式消防系统插件,可轻松将物体转换为可燃物。支持固体、植被、蒙皮网格和地形树木等多种对象类型,提供火焰蔓延、熄灭等效果。安装需通过Unity Package Manager添加Visual Effects Graph,并按照指引转换目标物体材质。使用盒型碰撞体或网格计算燃烧区域,可自定义火焰参数和视觉效果。内置多种转换选项,如Flammable Vegetation、Flammable Skinned Mesh等,适用于不同场景需求。注意使用前需备份材质和地形数据,并提供性能优化

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2236

001、NPU是什么?为什么嵌入式设备需要它?

本文通过作者调试工业相机板卡的经历,引出嵌入式设备为何需要NPU(神经网络处理器)的探讨。文章对比了CPU和NPU的设计哲学差异,指出NPU通过专用乘加器阵列和优化的数据流,能高效处理神经网络运算。作者分析了嵌入式设备使用NPU的三大优势:算力提升、功耗降低和实时性保障,并介绍了三类常见NPU形态。通过一个YOLOv5模型调试案例,揭示了NPU使用中的常见陷阱,最后给出五条实用建议,强调理解NPU原理和局限的重要性。文章生动展现了NPU在嵌入式AI应用中的关键作用。

m0_50546716的博客 125

Python实例浅谈之三Python与C/C++相互调用

一、问题       Python标识符必须以字母或下划线开头,后面跟字母、下划线或者数字,且标识符不能为关键字,如何有效的检查? 二、解决 1、方法一 (1)python脚本 三、总结 (1)Python代码性能的分析和提高还需要不停的总结,在循环中尽量不要重复计算值不变的字符串。 (2)若有更好的设计或思路,请留言,在此先感谢!

乌托邦 10万+

AD9361功能介绍和使用

AD9361使用分数分频锁相环(PLL)来产生发射机和接收机本地振荡器(LO)频率和BB PLL。BB PLL 可用于数据转换、数字滤波器和 |/O 端口。PLL的参考时钟可以由外部振荡器或外部晶体(XO)和数字可编程片内可变电容提供,电容微调产生参考时钟频率,XO和微调电容的组合统称为DCXO。有多个天线输入的分集系统。接收链数据首先经过低噪声放大器(LNA),然后是同相(1)和正交(Q)放大器,混频器和频带整形滤波器,可将接收到的信号下变频为基带以进行数字化。时分双工(TDD)和频分双工(FDD)。。。

wangjie36的博客 1万+

桥接模式_结构型_GOF23

桥接模式

C/C++ 729

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

23种设计模式教程目录

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

wyl703的博客 993

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

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

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

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

键盘爱好者 1368

Statistics and Machine Learning Toolbox

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

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

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

weixin_39681644的博客 121

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

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

weixin_39563132的博客 113

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

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

m0_58687318的博客 367

《大话设计模式》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

结构型设计模式解析:适配器、桥接等7种模式实战

结构型设计模式是面向对象编程中的核心概念,主要用于处理类与对象之间的组合关系。这类模式通过定义清晰的接口和层次结构,显著提升代码的可复用性和扩展性。其核心原理包括接口适配、功能扩展和结构简化等关键技术,在系统架构设计中具有重要价值。典型应用场景包括第三方库整合、跨平台开发、复杂系统封装等工程实践。适配器模式通过转换接口解决兼容性问题,桥接模式分离抽象与实现以应对多维度变化,而装饰器模式则实现了运行时功能的动态扩展。掌握这些模式能有效解决软件开发中的接口设计、系统解耦等常见挑战。

weixin_30786657的博客 316

传送门(portal)

Linux operation(Linux运维) #RHEL/CentOS/fedora系列为主   Basis:   Kernel:     常见系统调用   Commands:     trouble shooting命令详解目录   Services:     SSH:     各种文件系统FileSystem:     NFS:     F...

weixin_30919919的博客 211

简单工厂模式、工厂模式、抽象工厂模式比较

前言: 设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。 一般我们会说设计模式一共有23种,总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命

xuangelouzhu的博客 944

C++ Pimpl模式:编译防火墙与二进制兼容性实战

Pimpl(Pointer to Implementation)是C++中实现编译期隔离的核心技术,通过将实现细节隐藏在不透明指针背后,有效解决头文件依赖导致的编译时间膨胀问题。该模式基于OOP的接口隔离原则,利用智能指针(如unique_ptr)管理实现对象生命周期,在大型项目中能减少50%-70%的编译时间。作为经典的编译防火墙技术,Pimpl不仅提升工程构建效率,还能确保二进制兼容性(ABI),是现代C++开发中处理第三方库依赖和平台特定实现的优选方案。结合RAII和移动语义等现代特性,该模式在Qt、

weixin_34245749的博客 363
上一篇: 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、付费专栏及课程。

余额充值