设计模式之桥接

【人工智能】向量数据库全生命周期数据安全防护体系:破解向量化与检索双环节泄露风险 大模型时代,向量数据库已成为RAG(检索增强生成)架构、语义检索、多模态应用的核心基础设施,解决了大模型幻觉、长上下文窗口限制、私有知识落地等核心痛点。但行业普遍存在认知误区:将Embedding向量等同于“无害的语义压缩乱码”,忽视了向量数据原生的泄露风险。 阅读详情
介绍
  • 实现与抽象分离, 使他们可以独立变化, 甚至运行时进行实现的切换;
  • 对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,在有的情况下,我们需要将这些行为也进行归类,形成一个总的行为抽象,这就是桥模式;
  • 不希望抽象部分和行为有一种固定的绑定关系,而是应该可以动态联系的;
例子
  • 例如,一杯咖啡为例,子类实现类为四个:中杯加奶、大杯加奶、 中杯不加奶、大杯不加奶。
    但是,我们注意到:上面四个子类中有概念重叠,可从另外一个角度进行考虑,这四个类实际是两个角色的组合:抽象 和行为,其中抽象为:中杯和大杯;行为为:加奶 不加奶(如加橙汁 加苹果汁).
    实现四个子类在抽象和行为之间发生了固定的绑定关系,如果以后动态增加加葡萄汁的行为,就必须再增加两个类:中杯加葡萄汁和大杯加葡萄汁。显然混乱,扩展性极差。
  • 再入人, 可以具体分为男人, 女人, 人会有各种行为, 如工作, 学习, 娱乐…, 但对于不同职业的人所完成的具体行为行为内容是不同的, 显然如果为每个职业单独实现其行为是非常不好的设计,容易造成类的膨胀. 如下的结构中男人/女人继承与人, 男/女工人, 男/女教师, nan/女学生…又分别继承与男人/女人, 每个职业中都要实现人的必要行为: 吃饭, 睡觉, 学习, 工作, 游乐.., 这样非但有大量重复的代码不易扩展,如以后哪天要添加新的职业人, 又得同时实现男女连个类,或哪天出现了人妖, 哪必须为每个类加上人妖职业…

这里写图片描述

解决方案
  • 在我们每次使用设计模式时,我们应该根据设计原则去设计,而不是直接使用已有设计模式去套用,我们要明白的一点是设计模式是根据一定的设计原则而产生的。
    我们要遵循两个基本原则:
    • 找出变化封装之
    • 优先使用对象聚集,而不是继承
  • 前面的例子中, 变化的有抽象人的实现, 和职业的选择, 人完全可以选择不同的职业, 而不同的职业下会有不同的行为;所以我们可以将具体的人进行抽封装, 具体的职业进行抽象封装;
    如下图:

这里写图片描述

代码
// 抽象出变化的实现,可以用抽象工厂来选择具体的实现
class Carrier
{
public:
    virtual void vConHardWork() = 0;
    virtual void vConLeisureWork() = 0;
};
class Teacher : public Carrier
{
public:
    virtual void vConHardWork()
    {
        cout<<"teachers work hard for make more money!"<<endl;
    }
    virtual void vConLeisureWork()
    {
        cout<<"teachers work in a leisure-work company!"<<endl;
    }
};
class Worker : public Carrier
{
public:
    virtual void vConHardWork()
    {
        cout<<"workers work from 9:00am to 5:00pm everyday!"<<endl;
    }
    virtual void vConLeisureWork()
    {
        cout<<"workers work 8 hours in a leisure-company!"<<endl;
    }
};
class Human
{
public:
    Human(Carrier* ca,const string str):carir(ca),name(str){};
    virtual void vHardWork(){};  // 不实现
    virtual void vLeisureWork(){};
protected:
    string name;
    Carrier* carir;
};
class MaleCarrier : public Human
{
public:
    MaleCarrier(Carrier* ca,const string name):Human(ca,name){};
    virtual void vHardWork()
    {
        cout<<"man need work hard for the family..."<<endl;
        carir->vConHardWork();
    }
};
class FemaleCarrier : public Human
{
public:
    FemaleCarrier(Carrier* ca,const string name):Human(ca,name){};
    virtual void vLeisureWork()
    {
        cout<<"female need pay more attention on care about family..."<<endl;
        carir->vConLeisureWork();
    }
};
RH850从0搭建Autosar开发环境【17】- Davinci Configurator之DCM模块配置详解(下) 阅读详情

相关推荐

Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明

Utrust4701F与Utrust2700R读写器支持银河麒麟系统,广泛应用会员管理、支付管理等领域。本文将重点介绍Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明。以上方法适用于主流国产操作系统,如 优麒麟(UbuntuKylin)/ 中标麒麟(NeoKylin) / UOS(统信操作系统)/ 中兴新支点 / 红旗 linux(redflag linux)/ 普华 Linux(I-soft OS) / 威科乐恩 Linux(WiOS)等

华翔天诚科技 1833

彻底搞懂设计模式DesignPattern-桥接模式

桥接模式 适用于多个不同的维度相互结合产生很多实体的情况。 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。 是一种结构型设计模式 Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展 实现桥接模式,至少要4个角色 抽象类(Abstraction):定义抽象类的接口,一般为

Ping 328

FPGA+滨淞CCD实战:手把手教你搭建S7031/S10142成像电路(附避坑指南)

本文详细介绍了使用FPGA驱动滨淞CCD传感器(S7031/S10142)构建高精度成像系统的完整实战流程。内容涵盖核心器件选型、系统架构规划、电路板(焦面板与接口板)设计要点、FPGA Verilog逻辑实现,并提供了从电源管理、信号调理到数据采集的详细避坑指南,帮助读者从零搭建稳定可靠的成像电路。

weixin_29271263的博客 227

DesignPattern-桥接模式

桥接模式: 将抽象部分与它的实现部分分离开来,使他们都可以独立变化 将继承关系转化我关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。 角色: Abstraction:抽象类 RefinedAbstraction:扩充抽象类 Implementor:实现类接口 concreteOmplementor具体实现类 代码实现: public abstract class Sha...

其实我也没有太多期盼,毕竟一生太短,少有圆满 179

ROS2 Humble + TurtleBot4仿真环境搭建与避坑实战

本文详细介绍了ROS2 Humble与TurtleBot4仿真环境的搭建与避坑实战,包括环境配置、依赖安装、仿真调试和性能优化等关键步骤。通过保姆级教程和实用技巧,帮助开发者快速搭建稳定的机器人仿真环境,提升开发效率。特别推荐使用Ubuntu 22.04原生系统以避免常见问题。

weixin_30897233的博客 399

【目标检测】基于yolov5的铝型材表面缺陷检测(附代码和数据集,Ubuntu或者Linux系统均可运行)

【目标检测】基于yolov5的铝型材表面缺陷检测(附代码和数据集,Ubuntu或者Linux系统均可运行)

学无止境、积少成多、厚积薄发 2170

设计模式之桥接模式详解

设计模式之桥接模式详解 文章目录设计模式之桥接模式详解一、什么是桥接模式二、桥接模式的应用场景三、桥接模式的角色组成四、桥接模式通用写法示例五、桥接模式优缺点 一、什么是桥接模式 桥接模式(Bridge Pattern) 也称为桥梁模式、接口模式或者柄体模式,是将抽象部分与它的具体实现部分分离,使它们都可以独立地变化,属于结构型模式。桥接模式主要目的是通过组合的方式建立两个类之间的联系,而不是继承。但又类似于多重继承方案,但是多重继承方案往往违背了类的单一职责原则,其复用性较差,桥接模式是比多重继承更好的

weixin_45538589的博客 1万+

11年电赛综合测评——单运放三角波发生器

目录 背景知识科普: 原理:局部负反馈+大环负反馈+积分器 仿真图如下: 背景知识科普: 反馈电路是将放大器输出信号(电压或电流)的一部分或全部,回收到放大器输入端与输入信号进行比较(相加或相减),并用比较所得的有效输入信号去控制输出,这就是放大器的反馈过程。 一、反馈放大器反馈极性的经验分析法—符号法 分析步骤1.在输入端上加上一个“+”或“-”的输入信号,按瞬时极性法标出反馈放大器中各个电极(基极b,集电极c,发射极e)电压的瞬时性。 2.判断经放大和反馈后得到的反馈信号Xf的瞬时极性

沉迷单车的追风少年 9905

设计模式之桥接模式

设计模式之桥接模式

来自上海的这位朋友 5080

2025华为od机试真题B卷【字符串计数匹配】Java&Go 实现

给你一个字符串str和整数k,返回满足以下条件的所有子字符串个数: 1.恰好包含k个字母。 2.数字0-9各出现至少一次。

MISAYAONE的博客 639

RKNN 端侧部署必看:YOLOv11 Pose 姿态估计模型转换与性能优化实战

随着人工智能技术在边缘计算领域的快速发展,姿态估计作为计算机视觉的重要分支,在智能监控、人机交互、体感游戏等场景中展现出巨大的应用潜力。本文深入研究了YOLOv11 Pose模型在Rockchip RKNN平台上的部署方案,从理论基础、模型转换、平台优化到实际部署进行了全面阐述。通过详细的技术分析和实验验证,证明了RKNN平台能够有效提升YOLOv11 Pose的推理性能,在RK3588硬件平台上实现了高达100 FPS的实时姿态检测,为边缘计算场景下的姿态估计应用提供了高效的解决方案。

m0_71589036的博客 183

设计模式——桥接设计模式(结构型)

桥接设计模式是一种结构型设计模式,用于将抽象与实现解耦,使二者可以独立变化。它通过将一个类拆分为“抽象”和“实现”两部分,并通过桥接关系组合,避免了类继承层次结构过于庞大。桥接模式包含抽象类、扩充抽象类、实现类接口和具体实现类等角色。在实现方式上,结合了策略模式,适用于风控系统通知等场景。桥接模式适合维度较多的场景,与其他设计模式有明显区别,实战示例展示了其在项目中的应用和优势。

庄小焱 1637

c++ pcl点云处理(2025 长期更新)

目录1.常用的点云文件2.认识点云的文件格式3.点云的数据结构4.输入输出(IO)5.KD树6.Oc树(八叉树)7.点云可视化8.点云滤波9.点云拟合分割10.点云与图像11.特征点与特征描述及提取12.点云配准13.点云曲面重建

twnkie的博客 2258

桥接设计模式

桥接设计模式 简单介绍 桥接模式是一种结构型设计模式。该模式是将抽象和具体的实现这两个维度独立开来,二者互不影响,可以独立的扩展。通过组合的方式,将二者进行关联。 使用场景 一个类存在两个变化的维度,且这两个变化维度都有扩展的需求,那么这种类在结构在设计时可以采用桥接模式。例如:对智能手机App进行类的设计时,可以对其抽象出两个维度。其中一个维度是手机的操作系统(如新增一个鸿蒙系统),另...

Keiissland的博客 865

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

设计模式之-桥接器

简单一例,让你秒懂设计模式!!! 设计模式——桥接器 Talk is cheap. Show me the code!

Feify博客 730

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

设计模式之桥接设计模式

【代码】设计模式之桥接设计模式。

2302_76363587的博客 1115

设计模式——桥接设计模式(Bridge)

文章目录1.品牌1.1 品牌接口1.2 格力1.3 美的2. 设备2.1 设备基类(用于桥接品牌)2.2 空调2.3 冰箱2.4 电风扇3. 桥接模式调用Test 代码:GitHub 1.品牌 1.1 品牌接口 public interface Brand { String name(); } 1.2 格力 public class Gree implements Br...

蒋含竹的博客 366

C++中的桥接设计模式

本文简单介绍C++中的桥接设计模式。主要是为了隐藏数据以及减轻编译时的压力。 通常的做法是另外定义一个新的类,其接口和原来的类一致,但是其数据全部隐藏在新的类中。例如我们定义A类,然后定义一个新类B和其有相同的接口,其数据成员都在新类中。引用A类的代码就不需要重新编译。 1 2 3 4 5 6 7 8 ...

蜜汁程序员的博客 313

设计模式之桥接模式(Bridge Design Pattern)

桥接模式(Bridge Design Pattern),也叫作桥梁模式。在 GoF 的《设计模式》一书中,桥接模式是这么定义的:“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就是:“将抽象和实现解耦,让它们可以独立变化”。 桥梁模式从名字来看很具象,但从定义来看又很抽象难懂。对于初学设计模式,桥梁最难理解的一种模式之一。 本文我们从一个飞机的例子慢慢演化,来理解桥

xjj1314的专栏 760

设计模式之 桥接模式

OverrideSystem.out.println("画一个"+color.getColor()+"的圆");@OverrideSystem.out.println("画一个"+color.getColor()+"的椭圆");

2403_82445975的博客 2275

设计模式之桥接器详解

桥接模式:连接抽象与实现的桥梁 桥接模式是一种结构型设计模式,通过分离抽象部分与实现部分,使两者可以独立变化。它能有效解决跨平台GUI开发等场景中的扩展性问题。该模式包含四个关键组件: 抽象类定义高层接口并维护实现类的引用 扩充抽象类扩展基础抽象功能 实现类接口定义底层操作规范 具体实现类提供平台相关的具体实现 典型应用包括跨平台UI框架、多种消息通知方式等场景。使用桥接模式可避免多层继承带来的复杂性,提高系统扩展性,但也会增加代码复杂度。在需要多维度变化的系统中,桥接模式是理想的解决方案。

从不水文,坚持创作,加油 1291

java设计模式之桥接设计模式

桥接设计模式: 所谓桥接设计模式就是把事物和器具体实现分隔开来,使他们各自独立的变化。桥接的意思是将抽象化与实现化解耦、 使得二者独立变化。 桥接的设计思路:这里以数据库连接为例来说明 第一步:定义接口DBInterface,提供connection方法 第二步:定义MySqlConnection类,实现DBInterface接口 第二步:定义OracleConnection类,实现D

zdliue的博客 403

设计模式——桥接模式

桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与实现部分分离,使它们可以独立地变化。它通过提供一个桥接结构,将抽象部分与实现部分解耦,这样两者的变化不会相互影响,从而应对多层继承结构带来的问题。假设你正在设计一个游戏,游戏中有不同类型的角色和武器。如果不使用桥接模式,你可能会为每种角色和武器的组合创建一个子类,这样会导致大量的子类产生。但是,如果使用桥接模式,你可以将角色和武器分离开来,使得它们可以独立地进行扩展。

2302_77758423的博客 893

10【桥接设计模式】

桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使得它们可以独立变化。Tips:需要注意的是,桥接模式中的抽象并不是指抽象类或接口这种硬性概念,实现也不是具体指实现类;抽象与实现分离指的是两种维度的分离。这需要我们继续学习后面的知识;【案例】我们需要创建不同品牌的不同设备,这种关系使用继承来描述如下:设计好继承体系后,我们发现类的数量非常非常多,如果需要新增一个品牌或者新增一个设备都会导致类的数量激增;因为一个品牌都有手机、电脑、相机等设备。一个设备也会有小米、华为、神舟等品牌;...

緑水長流*z 2076

面试官:设计模式中的桥接模式是什么?

面试官:设计模式中的桥接模式是什么?

真正的大师永远怀着一颗学徒的心 1431
上一篇: Lua闭包的理解
下一篇: 模式设计之组合Composite
呵离
博客等级 码龄12年 18粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值