【设计模式】Bridge Design pattern 桥接模式

1.桥接模式要解决的问题

多个维度的变化引起的继承组合指数级增长

例子

一个物体有不同形状和不同颜色,如何用类来表示它们,这里包含了两个变化维度,一个是物体的形状,一个是颜色

继承的方式

在这里插入图片描述
如果使用继承的方式,此时要增加一个形状就要多两个类,或者增加一个颜色也要多两个类,这个增长是指数级的

组合的方式

在这里插入图片描述
如果是组合的方式,此时增加一个形状,那就只需要增加一个形状的类,要增加一个颜色也只用增加一个颜色的类,变化就被控制住了

2.实际使用场景

JDBC API和JDBC Driver, JDBC API接口去管理连接和解析操作返回的数据,但是底层具体是怎么做连接的,怎么做查询的是JDBC Driver来做的,在使用JDBC API的时候需要指定不同的JDBC Driver,这也是桥接模式的一个特点,具体实现是需要在使用的时候再指定的

3.桥接模式的结构

将一个很大的类或者一堆紧密相关的类拆分成抽象和接口,让他们分别来管理不同的变化
由一个抽象的类包含一个接口组成。抽象的类像是一个提供功能的API,共client直接使用。被组合的接口往往提供原子的方法,这些原子方法往往被抽象类直接调用或者组合使用。接口可以有很多种不同的实现,而抽象类也可以有自己的子类去扩展更多的功能
在这里插入图片描述

4.桥接模式相关的设计原则和面向对象特性

  1. 封装
    高层不需要知道底层实现的细节,比如在使用JDBC API的时候,只需要用Class.forName()指定一个driver,不需要知道driver是怎么实现的
  2. SOLID-Open close原则
    每次加一个维度的类,只需要新建新的抽象类或者新建新的实现即可,不需要改动任何类,比如,如果要实现不同的API,那就新加一个API的类,如果要新建不同的数据库实现,那就新加一种driver
  3. SOLID-Single responsibility原则
    将一个大类划分成了不同的类来负责做不同的事情,职责更单一了

5.和其他模式的联系

1.和Adapter的类似点
2.和State,strategy的类似点
3.可以和抽象工厂
4.可以和Builder模式组合使用

参考文献:https://refactoring.guru/design-patterns/bridge

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/6154.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

抖音seo优化系统常见的交付形式|技术开发

1. 一次性交付:将整个SEO优化系统一次性交付给客户,包括相关的文档、工具和数据分析报告,由客户自行操作和维护。 2. 阶段性交付:将SEO优化系统分为不同的阶段进行交付,每个阶段完成后进行检查和评估,根据…

2. [手把手教你搭建] 之 在linux上搭建mysql

1. 首先下载mysql安装包,这里一般有如下2种下载方式 wgt方式下载:进入服务器中的package目录(注:该目录是我自己创建的,用于存放所有应用的安装包,您也可以随便创建其他名称的目录来存放安装包&#xff09…

k8s部署

kubernetes简要 Kubernetes 是用于自动部署, 扩展和管理容器化应用程序的开源系统. 它将组成应用程序的容器组合成逻辑单元, 以便于管理和服务发现 kubernetes功能简介 服务发现和负载均衡 存储编排 自动部署和回滚 自动完成装箱计算 自我修复 密钥与配置管理 Kuberne…

算法题记录

力扣的算法题:1154 给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。 示例 1: 输入:date “2019-01-09” 输出:9 解释:给定日期是2019年的第九天。 示例…

【数据结构与算法】查找(Search)【详解】

文章目录查找查找概论一、查找的基本概念顺序表查找一、定义二、算法有序表查找一、折半查找二、插值查找三、斐波那契查找线性索引查找一、稠密索引二、分块索引三、倒排索引二叉树排序与平衡二叉树一、二叉排序树1、定义2、二叉排序树的常见操作3、性能分析二、平衡二叉树1、…

【学习笔记】启示录 - 打造用户喜爱的产品(阅读摘录)

【学习笔记】启示录 - 打造用户喜爱的产品(阅读摘录) 图书信息 Marty Cagan 著 七印部落 译 人员: 负责定义和开发产品的团队成员的角色和职责 流程: 探索、开发富有创意的产品时,反复应用的步骤和成功的实践经验 产品…

Ethernet-APL——网络拓扑结构

| 三种独立的应用场景——适用于短距离小型网络和长距离大型网络! Ethernet-APL(Advanced Physical Layer,高级物理层)是过程工业的新标准。它基于IEEE 802.3cg的10BASE-T1L规范,并通过使用两线制以太网来连接到现场设…

【新2023Q2押题JAVA】华为OD机试 - 最长合法表达式

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:最长合法表达式 题目 提取字…

网管gateway

提到网关,可能大家都有所了解,但是网关具体有什么作用呢??? 不绕关子了,具体作用有以下几点: 对用户请求做身份认证、权限校验将用户请求路由到微服务,并实现负载均衡对用户请求做…

第53章 短信验证服务和登录的前端定义实现

1 向src\router\index.js添加定义 { path: /LoginSms, name: 手机号登录, component: () > import(../views/LoginSmsView.vue) }, { path: /Users/Register, name: 用户注册, component: () > import(../views/Users/RegisterView.vue), }, 2 向src\common\http.api.js添…

【面试】Java集合面试题

文章目录集合容器概述什么是集合集合的特点集合和数组的区别使用集合框架的好处常用的集合类有哪些?List,Set,Map三者的区别?集合框架底层数据结构哪些集合类是线程安全的?Java集合的快速失败机制 “fail-fast”&#…

css 样式开发中遇到的问题

1.文本换行 汉字和英文数字字符适配 word-break: break-all;word-wrap: break-word;text-align: left; 2.文本换行以及出现省略号 word-break: break-word;overflow: hidden;text-overflow: ellipsis; // ...展示display: -webkit-box; // 弹性伸缩盒盒子模型显示-webkit-line…

面试常问的Linux之 I/O 复用

I/O 复用 一、I/O的概念 在Linux系统中,I/O(输入/输出)指的是计算机系统的数据交换过程,包括从外部设备读取数据(输入)和将数据发送到外部设备(输出)。I/O操作是Linux系统中非常重要…

人工智能从来不是一帆风顺的

不久之前,人们还常说,计算机视觉的辨别能力尚不如一岁大的孩子。如今看来,这句话要改写了。 ----- 特伦斯谢诺夫斯基 目录 人工智能初现端倪 人工智能初现 人工智能“第一次危机”——“设计派”行不通 第一次危机破局——学习派初见成效…

Python-np.expand_dims()

1. np.expand_dims 用于扩展数组的维度 执行程序后注意观察中括号[ ]的位置和数量 np.expand_dims(a, axis0)表示在axis0维度处扩展维度,加一层中括号[ ]; np.expand_dims(a, axis1)表示在axis1维度处扩展维度,加一层中括号[ ]; np.expand_dims(a, …

Golang每日一练(leetDay0025)

目录 73. 矩阵置零 Set Matrix Zeroes 🌟🌟 74. 搜索二维矩阵 Search A 2d-Matrix 🌟🌟 75. 颜色分类 Sort Colors 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Pyth…

大数据领域的发展及其对现实世界的价值

大数据已经成为全球各行业领域不可或缺的一部分,并且其应用不断涌现。尽管很多人最初对“大数据”这一术语表示怀疑和不信任,但大数据技术已经确立了稳定的发展方向。根据调研机构的预测,到2027年,全球大数据市场规模将达到1090亿…

PostgreSQL之Full VACUUM

前面我们介绍了PG中的Concurrent VACUUM,详细请参考PostgreSQL之Concurrent VACUUM,这篇我们继续来了解一下PG中的Full VACUUM。 我们了解Concurrent VACUUM允许在执行的时候仍然允许对正在VACUUM的表进行读取操作,因此这个操作对业务的影响也…

学成在线:第五天(p82-p93)

1、面试:在分片广播中,如何保证多个执行器不会重复执行任务? (虽然有分片序号,但是加入只有两个执行器,有很多任务,这两个执行器得到的分片序号也就只是两个数字,后面的分片是如何能…

蓝桥杯刷题冲刺 | 倒计时11天

作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.质因子2.蓝桥王国1.质因子 题目 链接: 1545. 质因子 - AcWing题库 给定一个整数 N…