当前位置: 首页 > news >正文

如何更好的理解设计模式之桥接模式

桥接模式

点奶茶的时候, 我们一般选择原味奶茶/牛奶奶茶/咸味奶茶
现在假设我们也有这些已经实现好的奶茶类, 且这个奶茶类仅仅就是一个类, 什么也没有, 不可改动
类似

class 奶茶{
}class 原味奶茶 extends 奶茶{
}

但是奶茶也分大杯奶茶, 中杯奶茶, 小杯奶茶, 如果我们要实现这种不同型号的奶茶, 可以设计出原味大杯奶茶, 原味中杯奶茶, 原味小杯奶茶, 牛奶大杯奶茶, 牛奶中杯奶茶…等等足足9个类, 那万一我们奶茶还能加冰加热半糖少糖, 岂不是越来越多类

这时候桥接模式就可以出场了
桥接模式的固定角色有四个:
抽象化(Abstraction)角色 :定义抽象类,并包含一个对实现化对象的引用。
扩展抽象化(Refined Abstraction)角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
实现化(Implementor)角色 :定义实现化角色的接口,供扩展抽象化角色调用。
具体实现化(Concrete Implementor)角色 :给出实现化角色接口的具体实现。

如何应用到本例子?

首先抽象化角色:

class 奶茶{protected 型号 x;public 奶茶(型号 x){this.x = x;}
}

扩展抽象化角色:

class 原味奶茶 extends 奶茶{public 原味奶茶(型号 x){super(x);}
}

实例化角色:

class 型号{
}

具体实例化角色:

class 大杯 extends 型号{
}
class 中杯 extends 型号{
}
class 小杯 extends 型号{
}

看到这里, 不知道大家有没有想到一个东西 : 组合
是的, 桥接模式的核心其实就是一个组合的概念

相关文章:

如何更好的理解设计模式之桥接模式

桥接模式 点奶茶的时候, 我们一般选择原味奶茶/牛奶奶茶/咸味奶茶 现在假设我们也有这些已经实现好的奶茶类, 且这个奶茶类仅仅就是一个类, 什么也没有, 不可改动 类似 class 奶茶{ }class 原味奶茶 extends 奶茶{ }但是奶茶也分大杯奶茶, 中杯奶茶, 小杯奶茶, 如果我们要实现…...

归并排序

参考链接 排序算法&#xff1a;归并排序【图解代码】_哔哩哔哩_bilibili #include <stdio.h> #include <stdlib.h>// 合并 void merge(int arr[], int tempArr[], int left, int mid, int right) {// 标记左半区第一个未排序的元素int l_pos left;// 标记右半区…...

ELF 1技术贴|在NXP源码基础上适配开发板的按键功能

本次源代码适配是在NXP i.MX6ULL EVK评估板的Linux内核源代码&#xff08;特定版本号为Linux-imx_4.1.15&#xff09;的基础中展开的。 首要任务集中在对功能接口引脚配置的精细调整&#xff0c;确保其能无缝匹配至ELF 1开发板。接下来&#xff0c;我们将详细阐述适配过程中关…...

Linux:kubernetes(k8s)pod的基础操作(6)

Linux&#xff1a;kubernetes&#xff08;k8s&#xff09;允许在任意节点使用kubectl命令&#xff08;5&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136460090?spm1001.2014.3001.5501 我在前两张进行了基础环境的一系列搭建&#xff0c;现在就正…...

【Docker】掌握 Docker 镜像操作:从基础到进阶

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在现代软件开发和部署中&#xff0c;容器化技术已经成为不可或缺的一部分。而 Docker 作为最流行的容器化…...

flink重温笔记(十一):Flink 高级 API 开发——flink 四大基石之 Checkpoint(详解存储后端)

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 11 天啦&#xff01;学习了 flink 四大基石之 Checkpoint &#xff08;检查点&#xff09;&#xff0c;主要是解决大数据领域持久化中间结果数据&#xff0c;以及取消任务&#xff0c;下次启动人可以恢复累加数据问题&…...

React富文本编辑器开发(九)位置

位置是指在使用Slate编辑器中进行插入、删除或执行其它操作时引用文档中特定位置的方式。有几种不同类型的位置接口&#xff0c;每种接口都用于不同的用例。 Path路径 路径是引用位置的最低级别的方法。每个路径都是一个简单的数字数组&#xff0c;它通过文档树下每个祖先节点…...

一次直播和图像识别技术应用的探索之旅

背景 Think Better 很多行业都在“卷”&#xff0c;作为金融科技行业的信也&#xff0c;也不例外。除了卷云计算、大数据和人工智能这些非常有深度的技术以外&#xff0c;信也向着技术融合创新的方向逐步探索&#xff0c;做得更好一些&#xff0c;为用户提供更好的价值&#xf…...

Ubuntu 下使用 Pybind11 实现 C++ 调用 Python 接口的示例

Pybind11 是一个轻量级的库&#xff0c;它提供了在 C 中无缝集成 Python 代码的能力。使用 Pybind11&#xff0c;你可以很容易地从 C 调用 Python 代码&#xff0c;反之亦然。下面我将通过一个简单的例子来展示如何在 Ubuntu 系统上使用 Pybind11 从 C 调用 Python 接口。 安装…...

docker安装和使用kafka

1. 启动zookeeper Kafka依赖zookeeper, 首先安装zookeeper -p&#xff1a;设置映射端口&#xff08;默认2181&#xff09; docker run --name zookeeper \--network app-tier \-e ALLOW_ANONYMOUS_LOGINyes \--restartalways \-d bitnami/zookeeper:latest2. 启动kafka docker…...

CTP-API开发系列之接口对接准备

CTP-API开发系列之接口对接准备 CTP-API开发系列之接口对接准备CTP-API文件清单CTP-API通用规则命名规则Spi与Api CTP-API通讯模式开发语言选择 CTP-API开发系列之接口对接准备 CTP-API文件清单 文件名说明ThostFtdcTraderApi.h交易接口&#xff0c;C头文件&#xff0c;包括 …...

C++小记 -链表

链表 文章目录 链表链表基础理论链表的类型单链表双链表循环链表 链表的存储方式链表的定义链表的操作添加节点删除节点 性能分析构建链表删除节点&#xff08;内存泄漏的坑&#xff09;1.直接移除2.使用虚拟头结点3.delete指针后&#xff0c;要将指针置为NULL&#xff01;&…...

网络协议学习DAY1

1.网络协议模型: OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式&#xff08;数据报、流式&#xff09; 网…...

vue3中全局变量的定义和获取

在vue项目中&#xff0c;我们知道vue2定义全局变量是在main.js文件将变量挂载到vue.prototype.name"lisi"&#xff0c;在页面通过this.name去调用。但是在vue3中&#xff0c;这个定义全局变量有所改变&#xff1a; const app createApp(App) app.config.globalProp…...

1.2 数据模型 数据库系统概论

目录 1.2.1 两类数据模型 1.2.2 概念模型 1.信息世界中的基本概念 &#xff08;1&#xff09;实体 &#xff08;2&#xff09;属性 &#xff08;3&#xff09;码 &#xff08;4&#xff09;实体型 &#xff08;5&#xff09;实体集 &#xff08;6&#xff09;联系 2.…...

C#中openFileDialog 对话框不在最顶层,TopMost的异常情况

重点&#xff01;&#xff01;&#xff01;若 当前窗体this的TopMost是false&#xff0c;可以设置为true&#xff0c;这样打开的对话框就是最顶层 /// <summary> /// 设置窗体TopMost&#xff0c;缺点和其他程序ide有冲突。例如VS有断点的调试会卡死 /// </summary&g…...

信息安全与阿里云等保三级方案实践总结

信息安全在当今数字化时代变得至关重要&#xff0c;企业和组织需要采取有效措施来保护其数据和信息资产。阿里云作为中国领先的云服务提供商&#xff0c;提供了等保三级方案&#xff0c;帮助用户满足国家信息安全等级保护的要求。本文将探讨信息安全和阿里云等保三级方案的重要…...

嵌入式学习记录——线程

线程基本概念: 线程:线程是一个轻量级的进程,位于进程空间内部,一个进程中可以创建多个线程 1.线程创建: 线程独占栈空间,文本段、数据段和堆区与进程共享 2.线程调度: 与进程调度是一样的 宏观并行,微观串行 3.线程消亡: 与进程消亡是一样的 4.进程和线程…...

同步服务器操作系统公网仓库到本地 _ 统信UOS _ 麒麟KYLINOS

原文链接&#xff1a;同步服务器操作系统公网仓库到本地 | 统信UOS | 麒麟KYLINOS 在如今快速发展的信息技术时代&#xff0c;维护和更新服务器操作系统变得越来越重要。无论是为了提高安全性、增加新功能还是提升系统稳定性&#xff0c;同步公网源仓库到本地都是一个关键步骤。…...

【数仓】flume常见配置总结,以及示例

相关文章 【数仓】基本概念、知识普及、核心技术【数仓】数据分层概念以及相关逻辑【数仓】Hadoop软件安装及使用&#xff08;集群配置&#xff09;【数仓】Hadoop集群配置常用参数说明【数仓】zookeeper软件安装及集群配置【数仓】kafka软件安装及集群配置【数仓】flume软件安…...

UP Squared 6000工业级创客板:边缘AIoT开发与部署实战指南

1. 项目概述&#xff1a;UP Squared 6000&#xff0c;一块能“扛事”的工业级创客板在工业自动化和边缘AIoT项目里摸爬滚打这么多年&#xff0c;我经手过不少开发板&#xff0c;从早期的树莓派到各种国产派&#xff0c;再到工业级的工控机。很多时候&#xff0c;我们面临一个尴…...

Perplexity新闻搜索失效真相:LLM缓存机制、地域策略与时间戳偏移的三重干扰(内部技术备忘录节选)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity新闻资讯搜索 Perplexity 是一款以实时性、引用可追溯性和多源聚合为特色的 AI 搜索工具&#xff0c;其“新闻资讯搜索”功能专为技术从业者与研究人员设计&#xff0c;支持按时间范围、可信信源&a…...

万物智联城市:TurMass™ Mesh 打造稳定可靠的物联底座

随着数字中国建设深入推进&#xff0c;智慧城市已从概念落地为城市治理与民生服务的现实场景。从市政设施智能运维、公共安全全域感知&#xff0c;到环境监测精准布控、便民服务高效触达&#xff0c;城市运行的每一环都离不开稳定、高效、低成本的物联网连接支撑。然而&#xf…...

Milk-V Duo开发板深度评测:双核RISC-V Linux系统实战与性能优化

1. 开箱初印象&#xff1a;当“小钢炮”遇上“大算力”刚拿到Milk-V Duo开发板时&#xff0c;我承认我愣了一下。包装盒比常见的信用卡还要小一圈&#xff0c;第一反应是“这怕不是个配件或者核心模块吧&#xff1f;”直到拆开静电袋&#xff0c;这块精致得如同艺术品的开发板本…...

3分钟上手Upscayl:免费AI图像放大工具的终极使用指南

3分钟上手Upscayl&#xff1a;免费AI图像放大工具的终极使用指南 【免费下载链接】upscayl &#x1f199; Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl 想要将模糊的…...

KNN和K-Means选错距离度量?详解闵可夫斯基距离中参数p的实战调优

KNN与K-Means距离度量实战&#xff1a;如何用闵可夫斯基距离参数p提升模型性能 当你在scikit-learn中第一次使用KNN分类器时&#xff0c;可能会注意到一个不起眼的参数p——它默认为2&#xff0c;代表使用欧氏距离。但鲜有人告诉你&#xff0c;这个参数的选择可能让你的模型准确…...

【免费下载】 C小项目分享(22个)亲测可运行

C#小项目分享(22个)亲测可运行 【下载地址】C小项目分享22个亲测可运行 C#小项目分享(22个)亲测可运行 项目地址: https://gitcode.com/open-source-toolkit/73645 资源介绍 本仓库提供了一个包含22个C#小项目的资源文件&#xff0c;所有项目均经过亲测&#xff0c;确保…...

【亲测免费】 探索高效编程新境界:RT809F编程器软件深度体验

探索高效编程新境界&#xff1a;RT809F编程器软件深度体验 【下载地址】RT809F编程器软件 本仓库提供了RT809F编程器的配套软件下载。RT809F是一款高度集成、功能强大的编程和调试工具&#xff0c;专为各种微控制器、闪存、EEPROM以及各种类型的IC设计。通过这款软件&#xff0…...

Google 的 IDE 演进小史

不知道你平时用的 IDE 是什么&#xff1f;小七的工程师同事有在用 Vim 的&#xff0c;也有 Emacs 党&#xff0c;IntelliJ 全家桶也有人在用&#xff0c;用得最多的可能是 VS Code。只要代码能写好、工具链能跑通&#xff0c;似乎大家没有必要使用同一个 IDE。 Google 早年也是…...

网站导航设计全攻略:4种常见布局方式,教你打造极致用户体验

在浏览网站时&#xff0c;你是否曾因找不到入口而感到焦躁&#xff1f;优秀的导航设计&#xff0c;就像一座灯塔&#xff0c;能在瞬间为用户指明方向。它不仅是网站的骨架&#xff0c;决定了信息的流转效率&#xff0c;更是用户体验的基石。一个逻辑清晰的导航系统&#xff0c;…...