GOF 23设计模式之 桥接模式

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中) WRF-FDDA 阅读详情

桥接模式

场景:

  • 商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?
  • 我们可以采用多层继承结构实现上面的关系
  • 如果使用继承结构存在的问题
    类继承模式
    • 扩展性问题(类个数膨胀问题)
      • 如果要增加一个新的电脑类型,则要增加各个品牌下面的类。
      • 若果要增加一个新的品牌盘,也要增加各种电脑类型的类
    • 违反单一职责原则
      • 一个类:联想笔记本,有两个引起这个类变化的原因。
  • 将这个场景分成两个维度
    两个维度示意图
    • 两种以上的维度使用桥接模式符合单一职责原则

桥接模式核心要点

  • 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承机构,使各个维度可以独立的扩展在抽象层建立关联。

桥接模式总结

  1. 桥接模式可以取代多层继承的方案。多层继承违背了单一职责原则,复用性较差,类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。
  2. 桥接模式极大的提高了系统的可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。

桥接模式在实际开发中的应用场景

  • JDBC驱动程序
  • AWT中的Peer构架
  • 银行日志管理:
    • 格式分类:操作日志、交易日志、异常日志
    • 距离分类:本地纪录日志、异地纪录日志
  • 人力资源系统中的奖金计算模块
    • 奖金分类:个人奖金,团体奖金,激励奖金
    • 部门分类:人事部门,销售部门,研发部门
  • OA系统中的的消息处理:
    • 业务类型:普通消息,加急消息,特急消息
    • 发送消息方式:系统内消息,手机短信,邮件

示例:

  • Computer类
package com.coderbean.bridge;

/**
 * Created by Chang on 15/9/29.
 */
public class Computer {
    protected Brand brand;

    public Computer(Brand brand) {
        this.brand = brand;
    }

    public void sale(){
        brand.sale();
    }
}

class Desktop extends Computer {
    public Desktop(Brand brand) {
        super(brand);
    }

    @Override
    public void sale() {
        super.sale();
        System.out.println("销售台式机");
    }
}

class Labtop extends Computer {
    public Labtop(Brand brand) {
        super(brand);
    }

    @Override
    public void sale() {
        super.sale();
        System.out.println("销售笔记本");
    }
}
  • Brand接口
package com.coderbean.bridge;

/**
 * 品牌
 * Created by Chang on 15/9/29.
 */
public interface Brand {
    void sale();
}

class Lenovo implements Brand{
    @Override
    public void sale() {
        System.out.println("销售联想电脑");
    }
}

class Dell implements Brand{
    @Override
    public void sale() {
        System.out.println("销售戴尔电脑");
    }
}

class Shenzhou implements Brand {
    @Override
    public void sale() {
        System.out.println("销售神舟电脑");
    }
}
  • Client类
package com.coderbean.bridge;

/**
 * Created by Chang on 15/9/29.
 */
public class Client {
    public static void main(String[] args) {
        //销售联想的笔记本电脑
        Computer c = new Labtop(new Lenovo());
        c.sale();

        //销售神舟笔记本
        Computer c2 = new Desktop(new Shenzhou());
        c2.sale();
    }
}
[Dify实战] 多轮对话状态管理:上下文保持与槽位填充 本文探讨了基于LLM的对话应用中多轮对话状态管理的核心挑战与解决方案。文章指出,单纯的"能聊"远远不够,关键在于建立有效的状态管理机制,包括上下文保持和槽位填充两大核心能力。通过Dify实战视角,详细阐述了如何设计工程化落地方案:采用混合策略的上下文管理(窗口+摘要+关键槽位)、JSON Schema强约束的槽位抽取、统一状态对象存储、冲突处理机制和优化追问策略。文章特别强调,合理的状态管理能将"聊天"转化为"可执行的业务流程",避免模型成为&qu 阅读详情

相关推荐

用AI+Playwright实现零代码UI自动化测试:以登录页面为例的实战指南

本文详细介绍了如何利用AI与Playwright结合实现零代码UI自动化测试,特别以登录页面为例进行实战演示。通过自然语言描述生成测试脚本,大幅降低技术门槛,提升测试效率,并支持跨浏览器验证。适合非技术人员快速上手专业级自动化测试。

weixin_28842269的博客 401

桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来...

ThinkWon的博客 8073

毫米波雷达之CFAR 目标检测

恒虚警率(CFAR)算法是一种广泛应用于雷达目标检测的算法,其主要目 标是减少由于杂波与回波之间强度不对称而引起的误报,以确保相对恒定的虚警 率。如图 3.4(a)所示,表示由距离单元组成的一维数据。在待测单元 D 周围选 择若干个背景杂波功率的蓝色单元构成参考滑窗,称为参考单元;而待测单元 D 相邻的若干个不用于背景估计的单元则称为保护单元。当参考单元和保护单元的 维度从一维扩展到二维时,相应的 CFAR 检测由一维 CFAR 演变为二维 CFAR 以处理参考窗口,如图 3.4 (b)所示。

m0_56120826的博客 4920

结构型模式之桥接模式

在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。 当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题。 一,桥接模式的定义与特点 将抽象与实现分离,使它们可以独立变化。它是用组合

weixin_45596022的博客 350

【chatgpt代码系列】磁导航纠偏算法推导

例如,可以根据AGV偏离路径的方向和距离,计算出需要进行的修正角度和移动距离,然后通过控制算法实现对AGV的纠偏。具体来说,磁导航AGV的行驶是通过磁场传感器感知地面磁场信号,然后根据信号的强度和方向来确定AGV的位置和方向,进而控制AGV的行驶。但是,在实际应用中,由于地面磁场信号的变化和干扰等因素,磁导航AGV可能会出现偏离路径的情况,导致行驶不稳定甚至出现误差。磁导航AGV纠偏公式是通过对AGV行驶中偏离路径的原因进行分析,结合磁导航AGV的工作原理和控制算法,推导出来的。假设AGV的目标方向为。

少磊的博客 2807

多智能体强化学习之值函数分解:VDN、QMIX、QTRAN系列优缺点分析(转载)

关于多智能体强化学习中VDN,QMIX,QTRAN三个算法再值分解方向的研究成果。三个算法呈递进关系

qq_33328642的博客 5858

欢迎光临我的公众号和我的博客

公众号内有更多的文章和干货,你还可以联系博主索取博主的诸多收藏 你还可以保存博主的个人博客网站,可以第一时间获取更多的文章和干货 博客地址:https://www.cuizb.top

致力于不留技术债务cuizb.top 1299

《UDS协议从入门到精通》系列——图解0x27:安全访问

什么是安全访问服务?应用场景和基本原理是什么?全网最直观详细的图解UDS-0x27:安全访问服务!!

车载系统攻城狮 7230

23种设计模式----桥接模式----结构型模式

桥接模式1.什么是桥接模式2.桥接模式的意义3.角色4.例子4.1抽象化类4.2 改善的抽象化类4.3实现者4.4 具体的实现者4.5 测试4.6结果5.扩充5.1在上述的例子中#换成*(实现结构)5.1.1新增实现类5.1.2测试类中新增:5.1.3测试结果:5.1.4总结5.2新增left,right方法(功能)5.2.1新增方法5.2.2 新增测试5.2.3结果5.2.4总结5.3扩展 1....

a18792721831的博客 582

化工设计软件:AutoCAD Plant 3D二次开发_(1).AutoCADPlant3D概述

AutoCAD Plant 3D 是一款专为化工行业设计的三维工厂设计和建模软件。它基于AutoCAD平台,提供了强大的三维建模功能和专业的化工设计工具,帮助工程师和设计师在工厂设计过程中提高效率和准确性。AutoCAD Plant 3D不仅能够创建详细的三维模型,还可以进行管道设计、设备布置、支架设计等复杂任务。通过上述案例,我们可以看出 AutoCAD Plant 3D 在化工厂设计中的强大功能和优势。该软件不仅提供了丰富的建模工具和专业的设计功能,还支持二次开发,使用户能够根据具体需求进行定制化操作。

kkchenjj的博客 1100

Palantir 凭什么两年涨 20 倍?深度解析解决 AI 幻觉的 “本体论“ 核心原理

本文深度解析了Palantir本体(Ontology)的核心原理及其在企业AI应用中的革命性价值。本体通过构建结构化的语义层与动态执行层,将企业分散的数字资产(数据集、虚拟表、模型)映射为现实世界的数字孪生,使大模型能够在**严格的业务规则与数据边界内**进行推理与决策,从而从架构层面彻底解决AI幻觉问题。这一技术架构不仅帮助Palantir实现股价两年增长20倍、市值突破4000亿美金的商业成功,更成为SAP、Salesforce等ERP巨头争相模仿的下一代企业智能标准范式。通过航空业飞机故障应急处理等实

program哲学 222

java设计模式之组合模式

学习难度:★★★☆☆,使用频率:★★★★☆】 树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题,组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致性地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含子节点的节点)。下面...

weixin_30872867的博客 452

从 SAP GUI 走向 SAP Fiori:一套面向 SAP S/4HANA 的用户迁移实战方法论

SAP S/4HANA转型中,用户从SAP GUI迁移到Fiori的难点在于业务价值的重构而非简单的界面替换。Fiori的核心价值在于角色化、实时洞察和智能决策,而非完全替代GUI。成功迁移需分阶段推进:先展示关键角色的价值,建立统一入口,再逐步提高Fiori占比。让用户参与设计比后期培训更重要,需通过具体场景(如采购优先级管理)展示效率提升。迁移策略应平衡新旧界面优势,让Fiori成为业务价值触达的主要方式,而非强制替换。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 235

Java GoF 23种设计模式-结构型模式-桥接模式(Bridge Pattern)

文章目录一、模式定义二、模式动机三、模式结构四、代码实现 一、模式定义 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 二、模式动机 一个类存在两个(或多个)独立变化的维度,且这两个维度都可能变化; 在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。 三、模式结构 桥接模式包含如下角色: Abstraction:抽象类 RefinedAbstraction:扩充抽象类

WU4566285的博客 470

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

GOF23设计模式之桥接模式

GOF23设计模式之桥接模式,适用场景、场景分析、桥接模式核心要点分析、示例、总结

开心杨的个人博客 2791

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Go实现】实践GoF的23种设计模式:桥接模式

桥接模式将抽象部分和实现部分进行解耦,使得它们能够各自往独立的方向变化

ruanrunxue的博客 1164

SAP B1中文培訓教材_SDK

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

GoF 23种经典的设计模式——桥接模式

桥接模式的目的是将抽象与实现分离,使它们可以独立地变化,该模式通过将一个对象的抽象部分与它的实现部分分离,使它们可以独立地改变。它通过组合的方式,而不是继承的方式,将抽象和实现的部分连接起来。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类,这两种类型的类可被结构化改变而互不影响。通过桥接模式,我们可以轻松地组合不同的形状和颜色。

Aft3rGl0w的博客 557

GOF23 设计模式 之桥接模式

桥接模式的话 主要是为了 处理多维度的情况(类膨胀)继承的问题 维度过于多的情况 就会使得情况变得很复杂, 桥接模式利用 对象新增属性的方式来解决这一问题; 代码: // 电脑主类 package brige; public class Computer { private Brand brand; public Computer(Brand brand) { super...

wangrong111222的博客 151

Gof23设计模式之桥接模式

桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。它的核心思想就是将一个大类或一系列紧密关联的类拆分成两个独立的抽象和实现部分,以便能够更加灵活地扩展和变化。

m0_55993923的博客 594

GOF 23种设计模式——桥接模式(Bridge)

桥接模式(Bridge)是一种结构型设计模式。 定义: 桥接模式将抽象部分与实现部分分离,使他们都可以独立的进行变化。 主要特点: 把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。 桥接模式的UML图如下: 桥接模式的角色和职责: 1. Client 调用端 这是Bridge模式的调...

WWW_SYR的博客 507

GOF23设计模式之桥接模式-Bridge

桥接模式-Bridge Pattern简单介绍概述Coding 本文简单介绍桥接模式、 设计模式:桥接模式(Bridge) 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但

zhengyong14350的博客 244

设计模式GOF23——桥接模式

桥接模式(bridge)

buyoufa的博客 499

GOF23设计模式-结构型模式3-桥接模式

GOF23设计模式-结构型模式3-桥接模式(Bridge Pattern)

Tumbler 437

Java23种设计模式(GOF)——桥接模式

桥接模式(bridge)场景核心要点案例应用场景总结 场景 商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?如图: 可以使用多层继承结构实现上图的关系,但存在以下问题: 扩展性问题(类个数膨胀问题): 如果要增加一个新的电脑类型:智能手机,则要增加各个品牌下面的类 如果要增加一个新的品牌,也要增加各种电脑类型的类 违反单一职责原则: 一个类:联想笔记本,有两个引起这个类变化的原因 在这个场景下有两个变化的维度:电脑类型、电脑品牌 此时,可以将这个两个维度分开,根据

ozhi的博客 396

GOF的23种设计模式(7)—桥接模式

桥接模式 定义 将抽象部分和它的实现部分分离,使它们都可以独立的变化。 处理多层继承结构、处理多维变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。 优点 比多继承的方案更好,极大的减少了子类的个数,从而降低管理和维护的成本。 提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统,符合开闭原则。 缺点 增加...

Apandam的博客 248
上一篇: GOF23 设计模式之 代理模式
下一篇: GOF 23设计模式之 组合模式(composite)
coderbean
博客等级 码龄11年 12粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值