设计模式: 结构型之桥接模式(9)

设计模式之结构型模式 结构型模式 一、适配器模式 (一)定义:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。 (二)应用实例:读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。 (三)构成要素: 二、桥接模式 (一)定义:桥接模式是用于把抽象化与实现化解耦,使得二者可以独立变化,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 阅读详情

桥接模式概述

  • 桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使得它们都可以独立地变化
  • 在TypeScript中,这种模式可以通过接口和类的组合来实现,下面将详细解释桥接模式及其在TypeScript中的应用

1 ) 桥接模式的核心思想

  • 桥接模式的核心在于将抽象与实现解耦,使得它们可以独立变化
  • 通过组合的方式,而不是继承,建立抽象类与实现类之间的联系
  • 这种模式使得抽象部分和实现部分可以沿着各自的维度进行扩展,而不会相互影响

2 ) 桥接模式的结构

  • 在桥接模式中,通常包含以下几个角色
    • 抽象类(Abstraction)
      • 定义抽象类的接口,并保存一个对实现类对象的引用
    • 扩充抽象类(RefinedAbstraction)
      • 实现抽象类并扩展抽象接口,通过组合关系引入实现类
    • 实现类接口(Implementor)
      • 定义实现类的接口,这个接口不一定要与抽象类的接口完全一致
      • 实现类接口提供给抽象类一个调用的接口,而不需要知道接口的具体实现。
    • 具体实现类(ConcreteImplementor)
      • 实现实现类接口,完成具体的业务逻辑

桥接模式应用

/*

结构型 - 桥接
通过组合的方式,而不是继承,建立抽象类与实现类之间的联系
抽象部分和实现部分可以沿着各自的维度进行扩展,而不会相互影响

*/

// 工作者接口:定义具体工作的实现规范
interface Worker {
  performTask(): void; // 方法名微调为 performTask(),更语义化
}
 
// 基础工作者实现 
class BasicWorker implements Worker {
  performTask(): void {
    console.log('BasicWorker is performing the task');
  }
}
 
// 高级工作者实现 
class AdvancedWorker implements Worker {
  performTask(): void {
    console.log('AdvancedWorker is performing the task efficiently');
  }
}
 
// 任务抽象类:依赖工作者实现任务
abstract class Task {
  protected worker: Worker; // 持有工作者实例
 
  constructor(worker: Worker) {
    this.worker = worker;
  }
 
  public execute(): void { // 方法名改为 execute(),强调任务执行
    this.worker.performTask(); // 委托给工作者
  }
}
 
// 增强的任务类:扩展基础任务,添加额外功能
class EnhancedTask extends Task {
  constructor(worker: Worker) {
    super(worker);
  }
 
  public execute(): void {
    super.execute(); // 先调用基础任务逻辑
    console.log('EnhancedTask is adding extra features'); // 输出消息更明确
  }
}
 
// 使用示例
const basicWorker = new BasicWorker();
const advancedWorker = new AdvancedWorker();
 
// 组合基础工作者和增强任务
const taskWithBasicWorker = new EnhancedTask(basicWorker);
taskWithBasicWorker.execute();

// 输出: 
// BasicWorker is performing the task 
// EnhancedTask is adding extra features 

console.log('-----------------------');

// 组合高级工作者和增强任务
const taskWithAdvancedWorker = new EnhancedTask(advancedWorker);
taskWithAdvancedWorker.execute(); 
// 输出: 
// AdvancedWorker is performing the task efficiently
// EnhancedTask is adding extra features
  • 在这个示例中,Worker是实现类接口,BasicWorker和AdvancedWorker是具体实现类,它们实现了performTask方法
  • Task是抽象类,它持有一个对实现类对象的引用,并定义了一个execute方法,该方法调用了实现类的performTask方法
  • EnhancedTask是扩充抽象类,它继承了Task并扩展了execute方法
  • 通过这个示例,我们可以看到桥接模式如何将抽象与实现分离,使得它们可以独立地扩展和变化

桥接模式的优缺点


1 ) 优点

  • 分离抽象部分和它的具体实现部分,使得它们都可以独立地变化
  • 提高了系统的扩展性,在两个变化维度中任意扩展一个维度,不需要修改原有系统
  • 符合开闭原则,对扩展开放,对修改封闭

2 ) 缺点

  • 增加了系统的理解和设计难度,需要针对抽象层进行编程
  • 要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性

3 ) 总结

  • 桥接模式在TypeScript中的应用,使得我们可以更灵活地处理抽象与实现的关系,提高了系统的可维护性和可扩展性
  • 然而,它也增加了系统的理解和设计难度,需要在使用时权衡其优缺点,根据具体需求进行选择

桥接模式和组合模式之间的区别

  • 桥接模式和组合模式在多个方面存在明显的区别。

  • 首先

    • 从定义和结构上来看,桥接模式是一种结构型设计模式,它将程序的抽象部分与具体实现部分进行分离,使它们可以作为两个独立的维度进行扩展
    • 在桥接模式中,抽象部分有其抽象类与具体实现类,具体实现部分也有其抽象类与具体实现类。这样,抽象部分的具体功能实现就委托给了具体实现部分,符合开闭原则
    • 而组合模式则是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性
  • 其次

    • 从设计目标和效果来看,桥接模式的主要目标是解耦抽象与具体实现,使得它们可以独立地变化
    • 而组合模式则主要关注部分与整体之间的关系,通过树形结构来组织和管理对象
    • 在桥接模式中,抽象部分和具体实现部分之间的类可以进行不同的排列组合,实现不同的功能
    • 而在组合模式中,客户端代码可以一致地处理单个对象和组合对象,简化了客户端代码,并且更容易在组合体内加入新的对象
  • 最后

    • 从适用场景来看,桥接模式通常在需要抽象与具体实现解耦的场景中使用
    • 比如当抽象部分和具体实现部分都需要独立扩展时
    • 而组合模式则适用于需要表示对象的部分与整体关系的场景
    • 特别是当客户端需要一致地处理单个对象和组合对象时
  • 综上所述

    • 桥接模式和组合模式在定义、结构、设计目标和适用场景等方面都存在明显的区别
    • 选择使用哪种模式应根据具体的项目需求和设计目标来决定
用 dism 合并与删除 wim 映像 一、合并 假设 installA.wim 有 3 个映像,installB.wim 有 1 个映像。 1、全部合并 将 installA.wim 中的 3 个卷映像合并到 installB.wim 中,这样 installB.wim 中的卷映像增加到 4 个。 dism/export-image/sourceimagefile:d:\installA.wim/sourceindex:1/destinationimagefile:d:\installB.wim dism/export-image/source 阅读详情

相关推荐

一个AI Agent顶十个软件,toB赛道正在大洗牌

一个AI Agent顶十个软件,toB赛道正在大洗牌

ith321的博客 1331

设计模式复习笔记 (9)结构型模式:桥接模式

桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 如果软件系统中某个类存在两个独立变化的维度,通过桥接模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。模式动机 考虑两种常见文具:毛笔和蜡笔的区别 假如我们需要

qq_33303925的博客 405

十一种室内定位传感器方案汇总介绍与对比(机器人、物联网领域)

室内定位传感器方案汇总 目录 室内定位传感器方案汇总 1、定位方案概述 1.1、内定位系统有最基本的5种算法: 1.2、常用的室内定位技术主要包括以下几种: 1.3、定位理论 1.4、不同的定位方案对比 2、各种定位方案详细介绍 2.1、单线激光定位 2.2、多线激光定位: 2.3、视觉定位: 2.4、基于射频识别(RFID)技术室内定位 2.4.1、RFID标签(不涉及...

JK-Cool的博客 3万+

【设计模式】第9节:结构型模式之“桥接模式”

使用桥接模式,将抽象(例子中的产品)和实现(例子中的支付方式)分离开。桥接模式就是把抽象和实现分离开,感觉就是当有多个实体对应多种动作时,可以将多种动作封装成一个接口,而实体中通过组合的形式嵌入该接口,从而让实体类具备某些功能。

zuzhiang的博客 137

自动驾驶仿真:Carsim、NI和VTD联合仿真课题二

文章目录前言一、设备配置1、硬件需求2、网络配置二、Carsim工程配置1、创建工程2、创建数据库3、参数配置三、VTD工程配置1、创建工程四、Veristand工程配置1、创建工程五、运行程序 前言 上篇文章《Carsim、NI和VTD联合仿真课题一》简单地介绍了三者之间的联合框架,以及NI与VTD之间简单的组包与拆包指导。这篇文章将要讲述的是如何将三个软件联合起来,如何设置软件参数,用最简单的方法把仿真车开起来。 一、设备配置 1、硬件需求 注:真正的做智能驾驶仿真项目,至少需要两台电脑,一台实时机

zataji的博客 1万+

手把手教你用GNU Radio和PlutoSDR搭建FM收音机(附完整流程图)

本文提供了一份详细的实践指南,教你如何使用GNU Radio和PlutoSDR搭建一个功能完整的FM收音机。从软硬件环境准备、核心流程图构建,到运行调试与效果优化,手把手带你完成从射频信号接收、下变频、FM解调到音频输出的全过程,是入门软件定义无线电(SDR)的绝佳实践项目。

weixin_29189377的博客 752

[导入]C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式).zip(9.01 MB)

讲座内容: 本培训课程探讨GoF23之Bridge 桥接模式的意图、动因、原理、应用场景与C#语言实现,以及该模式在.NET框架程序设计中的具体应用。 课程讲师: 李建忠 上海祝成信息科技有限公司 高级培训讲师 MSDN特邀讲师 .NET技术专家,C++ CLI 专栏作家。南京邮电学院毕业,历任程序员,高级程序员,开发主管。现为上海祝成科技软件架构师,高级培训讲师。译著Microsoft ...

weixin_30646505的博客 110

通讯软件002——快速使用modscan进行modbus调试

快速使用modscan进行modbus调试

zhouwl72的博客 1032

【设计模式】——简单分类

设计模式分类                        创建型模式主要用于描述如何创建对象(5)         结构型模式主要用于描述如何实现类或对象的组合(7)         行为型模式主要用于描述类或对象怎样交互以及怎样分配职责(11) 创建型模式  (1) 工厂方法模式:               工厂方法模式(Factory Method):定义一个用于创建

周士豪 1955

AI报告撰写实战指南:从提示词工程到全流程优化的底层逻辑与实践突破

传统AI写作常被诟病为“信息拼贴”——模型虽能生成文本,却常出现逻辑断裂、数据矛盾、风格不符等问题。而“全流程优化”则是通过系统化设计,将报告生成拆解为需求解析→数据对齐→提示词设计→初稿生成→迭代优化→格式适配六大环节,每个环节均通过技术手段提升输出质量。提示词工程:本质是通过结构化指令(如角色设定、任务分解、格式约束、示例引导)精准控制模型输出方向,是连接用户需求与模型能力的“翻译器”。全流程优化。

2501_92808811的博客 888

【TC397第2篇】TC397 EB MCAL开发指南:ADS MCAL Demo集成深度解析

通过本文的指导,我们完成了TC397 EB MCAL与ADS的深度集成,并成功运行了一个简单的MCAL Demo。这个案例不仅帮助我们理解了MCAL在实际开发中的应用,同时也展示了ADS作为一个强大的开发工具在嵌入式系统开发中的优势。在接下来的系列文章中,我们将进一步探讨MCAL的高级应用、优化技巧以及更多实用的开发案例。敬请关注,共同探索TC397 EB MCAL开发的更多精彩!

一直在水些技术小文 453

结构型设计模式之桥接模式

桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。这种模式涉及到一个接口作为桥接,使得实体类的功能独立于接口实现类,两者可以独立地变化。 桥接模式的核心思想是:将抽象与实现解耦,使两者可以独立地变化。这种模式通过提供抽象和实现之间的桥接结构,来实现两者的解耦。

冰茶的博客 1689

【YOLOv11】从零搭建基于YOLOv11深度学习算法的农作物虫害检测系统(附带环境搭建+完整代码+讲解)

《基于YOLOv11的农作物病虫害智能检测系统》项目摘要 本项目开发了一个基于YOLOv11深度学习算法的农作物病虫害检测系统,支持玉米、水稻、草莓和西红柿等四大类经济作物的30多种病虫害识别。系统采用多模态检测方式,支持图片、视频和实时摄像头输入,并集成了完整的Web应用框架。 技术架构上,系统以PyTorch实现YOLOv11算法为核心,结合Flask搭建深度学习服务,SpringBoot构建业务后端,Vue3+TypeScript开发前端界面,MySQL数据库存储检测数据。系统具备用户权限管理功能,支

AnChenliang_1002的博客 813

C++设计模式结构型模式———桥接模式

桥接(Bridge)模式也叫桥梁模式,简称桥模式,是一种结构型模式。该模式所解决的问题非常简单,即根据单一职责原则,在一个类中,不要做太多事,如果事情很多,尽量拆分到多个类中去,然后在一个类中包含指向另外一个类对象的指针,当需要执行另外一个类中的动作时,用指针直接去调用另外一个类的成员函数。

无敌岩雀的博客 2353

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

实战设计模式之桥接模式

与上一篇介绍的适配器模式一样,桥接模式也是一种结构型设计模式。它旨在将抽象部分与其实现部分分离,使它们可以独立变化。通过桥接模式,我们可以让一个类的功能模块化,并且可以在不修改其他模块的情况下进行扩展或修改。这种设计思路有助于创建更加灵活、易于维护的代码库。为了更好地理解桥接模式,我们以现实生活中的蜡笔和毛笔为例。假如我们需要大、中、小三种规格的蜡笔和毛笔,每种规格的笔需要支持红、黄、蓝三种颜色。

hope_wisdom的技术博客 3329

NTscan扫描工具

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

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

桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转变为动态的组合关系,使得系统更加灵活,并易于扩展,有效的控制了系统中类的个数 (避免了继承层次的指数级爆炸).

weixin_46456187的博客 1099

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

设计模式之桥接模式:从原理到实战

适配器模式:

weixin_46619605的博客 1851

设计模式之桥接模式

桥接模式 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式是一种结构型设计模式,它基于类的最小设计原则,通过使用封装、聚合及集成等行为让不同类承担不同的职责。 它主要的特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。 桥接模式的四个角色 Abstraction:定义抽象接口,拥有一个Implementor类型的对象引用 RefinedAbstraction:扩展Abstraction中的接口

JustToFaith 2858

结构型模式:桥接模式

桥接模式(Bridge Pattern)是一种强大的结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。这种模式通过组合而非继承来实现,有效地解决了多维度变化带来的类爆炸问题。桥接模式的核心思想是"将抽象与实现解耦",让它们可以独立扩展,而不会相互影响。这就像建造一座桥,连接了两个可以独立发展的"岸",故名"桥接模式"。当我们面临一个系统需要在多个维度上同时扩展的情况时,传统的继承方式往往会导致类的数量呈指数级增长。

Luck_ff的博客 861

C#设计模式之【结构型设计模式:桥接模式】

C#设计模式之【结构型设计模式:桥接模式】一.桥接模式简述二. 代码实现三. 总结 一.桥接模式简述   桥接模式是一种很实用的结构型设计模式,如果系统中的某各类存在多个独立变化的纬度,通过桥接模式可以将这几个纬度分离出来,它是将抽象部分和实现部分解耦,使得他们都能够独立变化。   举例:假设现在有奥迪 A4,A6,A8三款车型,每款车型都有”乞丐版“、”普通版“、”豪华版“(实际上不止)如果按照传统的设计,应该为一个BaseCar抽象类,然后会有9种子类继承BaseCar。   而实际上奥迪车型和车型版

qq_33101689的博客 500

JAVA设计模式9:桥接模式,将抽象部分与实现部分分离

桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,桥接模式通过将继承关系转换为关联关系,来实现解耦和灵活性。

Designer 小郑的技术博客 1564

JAVA设计模式第三讲:结构型设计模式

设计模式(design pattern)是对软件设计中普遍存在的各种问题,所提出的解决方案。本文以面试题作为切入点,介绍了设计模式的常见问题。我们需要掌握各种设计模式的原理、实现、设计意图和应用场景,搞清楚能解决什么问题。本文是第三篇:结构型设计模式 设计模式从入门到精通9、结构型设计模式9.1、代理模式 Proxy9.2、桥接模式(不常用)9.3、装饰者模式 **Decorator**(BufferedInputStream)9.4、适配器设计模式 Adapter代理、桥接、装饰器、适配器 4 种设计.

Jet_qi的博客 1053

9、设计模式-结构型模式-桥接模式

桥接模式 桥接模式是一种很实用的结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。 与多层继承方案不同,它将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联,该关联关系类似一条连接两个独立继承结构的桥,故名桥接模式 桥接模式用一种巧妙的方式处理多层继...

weixin_34324081的博客 87

设计模式系列(10):结构型模式 - 桥接模式(Bridge)

将抽象部分与实现部分分离,使它们都可以独立变化。避免在多个维度上变化时出现类爆炸问题。

1093
上一篇: 设计模式: 结构型之适配器模式(8)
下一篇: 设计模式: 结构型之代理模式(10)
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值