桥接模式

ESXI安装群辉2024年9月DS918+7.2.2-72806详细全过程[青锐CC] ESXI安装群辉2024年9月DS918+7.2.2-72806详细全过程,ESXI7.0、ESXI8.0也可以参考。 阅读详情

3.1  认识桥接模式

(1)什么是桥接
        在桥接模式里面,不太好理解的就是桥接的概念,什么是桥接?为何需要桥接?如何桥接?把这些问题搞清楚了,也就基本明白桥接的含义了。
        一个一个来,先看什么是桥接?所谓桥接,通俗点说就是在不同的东西之间搭一个桥,让他们能够连接起来,可以相互通讯和使用。那么在桥接模式中到底是给什么东西来搭桥呢?就是为被分离了的抽象部分和实现部分来搭桥,比如前面示例中抽象的消息和具体消息发送之间搭个桥。
        但是这里要注意一个问题:在桥接模式中的桥接是单向的,也就是只能是抽象部分的对象去使用具体实现部分的对象,而不能反过来,也就是个单向桥。


(2)为何需要桥接
        为了达到让抽象部分和实现部分都可以独立变化的目的,在桥接模式中,是把抽象部分和实现部分分离开来的,虽然从程序结构上是分开了,但是在抽象部分实现的时候,还是需要使用具体的实现的,这可怎么办呢?抽象部分如何才能调用到具体实现部分的功能呢?很简单,搭个桥不就可以了,搭个桥,让抽象部分通过这个桥就可以调用到实现部分的功能了,因此需要桥接。

(3)如何桥接
        这个理解上也很简单,只要让抽象部分拥有实现部分的接口对象,这就桥接上了,在抽象部分就可以通过这个接口来调用具体实现部分的功能。也就是说,桥接在程序上就体现成了在抽象部分拥有实现部分的接口对象,维护桥接就是维护这个关系。


(4)独立变化
        桥接模式的意图:使得抽象和实现可以独立变化,都可以分别扩充。也就是说抽象部分和实现部分是一种非常松散的关系,从某个角度来讲,抽象部分和实现部分是可以完全分开的,独立的,抽象部分不过是一个使用实现部分对外接口的程序罢了。
        如果这么看桥接模式的话,就类似于策略模式了,抽象部分需要根据某个策略,来选择真实的实现,也就是说桥接模式的抽象部分相当于策略模式的上下文。更原始的就直接类似于面向接口编程,通过接口分离的两个部分而已。但是别忘了,桥接模式的抽象部分,是可以继续扩展和变化的,而策略模式只有上下文,是不存在所谓抽象部分的。
        那抽象和实现为何还要组合在一起呢?原因是在抽象部分和实现部分还是存在内部联系的,抽象部分的实现通常是需要调用实现部分的功能来实现的。


(5)动态变换功能
        由于桥接模式中的抽象部分和实现部分是完全分离的,因此可以在运行时动态组合具体的真实实现,从而达到动态变换功能的目的。
        从另外一个角度看,抽象部分和实现部分没有固定的绑定关系了,因此同一个真实实现可以被不同的抽象对象使用,反过来,同一个抽象也可以有多个不同的实现。就像前面示例的那样,比如:站内短消息的实现功能,可以被普通消息、加急消息或是特急消息等不同的消息对象使用;反过来,某个消息具体的发送方式,可以是站内短消息,或者是Email,也可以是手机短消息等具体的发送方式。

(6)退化的桥接模式
        如果Implementor仅有一个实现,那么就没有必要创建Implementor接口了,这是一种桥接模式退化的情况。这个时候Abstraction和Implementor是一对一的关系,虽然如此,也还是要保持它们的分离状态,这样的话,它们才不会相互影响,才可以分别扩展。
        也就是说,就算不要Implementor接口了,也要保持Abstraction和Implementor是分离的,模式的分离机制仍然是非常有用的。

(7)桥接模式和继承
        继承是扩展对象功能的一种常见手段,通常情况下,继承扩展的功能变化纬度都是一纬的,也就是变化的因素只有一类。
        对于出现变化因素有两类的,也就是有两个变化纬度的情况,继承实现就会比较痛苦。比如上面的示例,就有两个变化纬度,一个是消息的类别,不同的消息类别处理不同;另外一个是消息的发送方式。
        从理论上来说,如果用继承的方式来实现这种有两个变化纬度的情况,最后实际的实现类应该是两个纬度上可变数量的乘积那么多个。比如上面的示例,在消息类别的纬度上,目前的可变数量是3个,普通消息、加急消息和特急消息;在消息发送方式的纬度上,目前的可变数量也是3个,站内短消息、Email和手机短消息。这种情况下,如果要实现全的话,那么需要的实现类应该是:3 X 3 = 9个。
        如果要在任何一个纬度上进行扩展,都需要实现另外一个纬度上的可变数量那么多个实现类,这也是为何会感到扩展起来很困难。而且随着程序规模的加大,会越来越难以扩展和维护。
        而桥接模式就是用来解决这种有两个变化纬度的情况下,如何灵活的扩展功能的一个很好的方案。其实,桥接模式主要是把继承改成了使用对象组合,从而把两个纬度分开,让每一个纬度单独去变化,最后通过对象组合的方式,把两个纬度组合起来,每一种组合的方式就相当于原来继承中的一种实现,这样就有效的减少了实际实现的类的个数。
        从理论上来说,如果用桥接模式的方式来实现这种有两个变化纬度的情况,最后实际的实现类应该是两个纬度上可变数量的和那么多个。同样是上面那个示例,使用桥接模式来实现,实现全的话,最后需要的实现类的数目应该是:3 + 3 = 6个。
        这也从侧面体现了,使用对象组合的方式比继承要来得更灵活。


(8)桥接模式的调用顺序示意图
        桥接模式的调用顺序如图8所示:


                      图8  桥接模式的调用顺序示意图

避坑指南:LAMMPS做GCMC模拟时,化学势mu和压力p到底怎么设? 本文详细解析了LAMMPS中巨正则蒙特卡洛(GCMC)模拟的关键参数设置,特别是化学势(mu)与压力(p)的正确计算方法。通过理论分析、实用公式和黄金法则,帮助用户避免常见误区,提升模拟精度和效率,适用于各类复杂体系的分子模拟研究。 阅读详情

相关推荐

ICV:Metal Fill Insertion流程

如果不想删除先前加的metal fill,可以使用signoff_create_metal_fill -mode add命令,当使用这个mode后,工具不会fix density问题,哪怕设置了signoff.create_metal_fill.fix_density_errors,设置这个mode后可以使用以下option控制metal fill 的插入。默认情况下,signoff_create_metal_fill是会删掉已经加进去的metal/via fill再重新加的。

m0_61544122的博客 1101

aprl自定义SataPortMap引导群晖DSM7.2【GXNAS提供的DS918_7.2引导文件的一个补丁】

本文介绍了如何通过重新编译arpl引导来解决GXNAS群晖DSM7.2系统引导无法识别超过4块硬盘的问题。需要使用官方项目中的grub.cfg文件替换镜像中的grub.cfg文件,并按照编译引导方法中的步添加SataPortMap和DiskIdxMap。

weixin_40578599的博客 1万+

信息论基础理论与应用第三版(傅祖芸)第5章讲义.pptx

信息论基础理论与应用第三版(傅祖芸)第5章讲义.pptx

六分钟搭建自己的群晖NAS,附资源链接,操作视频

一直在想搭建自己的多媒体服务器系统,由此想到了NAS服务器。由于公司有一套群晖存储服务器,对它整个操作都比较熟悉,所以我最先想到了黑群晖,打算先用这个搭建一个多媒体服务器,等搭建起来后,在看看后续扩展方向。

twofyc的博客 1万+

TrueNAS Core做底层 安装黑群晖7.2

1、通过 diskgenius修改grub.cfg ,磁盘->>虚拟磁盘文件。3、记住mac地址 001132123456 001132123457。everyone 权限是full control保存。这个地址可以自己改 也可以使用默认的,主要是和。这边是两块网卡,我只加一个,只需要一块。我这边是a2池下面名为 xn 数据集。选择为open 就是开放。安装包和引导删掉中文哦。

sky的折腾日记 3397

我的NAS安装之旅(2)——问题总结篇

我的NAS安装之旅(2)——问题总结篇 黑群辉开启root账号和修改密码 「群晖NAS教程」最新6.2系统获取root权限设置root密码方法 - 黑NAS_NAS使用技巧_NAS如何搭建_黑群晖NAS_黑群晖NAS教程-万晓博博客 - 西安网站制作_个人博客模板_织梦模板_phpcms模板_西安seo优化_SEM优化_mac电脑学习-万晓博个人网站 (old-wan.com) 黑群晖半洗白,不建议全洗白!!! 黑群晖 篇二:黑群晖半洗白-利用docker方法 - 哔哩哔哩专栏 (bilibili.com)

qq_43284368的博客 7972

桥接模式(BridgePattern)

将抽象部分与实现部分分离,使它们都可以独立的变化。在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。实现系统可能有多个角度分类,每一种角度都可能变化。把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。抽象类依赖实现类。比如猪八戒从天蓬元帅转世投胎到猪,转世投胎的机制将尘世划分为两个等级,即:灵魂和肉体,前者相当于抽象化,后者相当于实现化。生灵通过功能的委派,调用肉体对象的功能,使得生灵可以动态地选择。

u013115157的博客 865

【JAVA设计模式】之桥接模式(BridgePattern)

桥接模式的作用是将两样东西连接起来,比如桥梁把河的两岸连接起来 桥接模式把“类的功能层次结构”和“类的实现层次结构”连接起来 类的层次结构 类的功能层次:父类通过定义抽象方法来定义接口API 类的实现层次:子类通过实现具体方法来实现接口API 示例程序 相关类一览表 类的层次 类名 描述 功能层 Express 快递寄件 功能层 EnhanceExpress (寄件)增加代收功能 实现层 ICompany 快递公司 实现层

兵临城下的博客 334

设计模式之桥接模式BridgePattern(十二)

桥接模式(bridge pattern) 的定义是:将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转变为动态的组合关系,使得系统更加灵活,并易于扩展,有效的控制了系统中类的个数 (避免了继承层次的指数级爆炸)。

徐泗空的博客 814

[Unity 设计模式]桥接模式(BridgePattern)

1.前言 继上一讲IOC模式的基础上继续本讲桥接模式,笔者感觉桥接模式是23种设计模式中桥接模式是最好用但也是最难理解的设计模式之一,23中设计模式就好武侠剧中一本武功秘籍,我们在工作过程中想要熟练运用其中的每一种设计模式就好比跟高手过招想要能运用好武侠秘籍中的每一招每一式,并且能随着对手出招的不同我们能随机应变对应的招数,这就要求我们对每一种设计模式都理解的非常深刻才能运用自如,打出组合拳的效

bmw601055的博客 513

详解设计模式:桥接模式

桥接模式(Bridge Pattern)也称为桥梁模式、接口模式或者柄体模式,有点像适配器模式,也是 GoF 的 23 种设计模式中的一种结构型设计模式。 桥接模式 是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 本篇内容包括:关于桥接模式桥接模式实现 Demo

栗筝i的博客 3988

桥接模式(BridgePattern)

基本介绍:    桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式示例代码:package org.brando; /** * * 类说明: 测试类 * @author Brando 2018年3月29日 下午2:03:59 */ public class Launc...

BrandoLv 327

设计模式桥接模式(BridgePattern)

核心模块:Abstracttion抽象类、RefinedAbstraction扩充抽象类、Implementor实现类接口、ConcreteImplementor具体实现类 所有代码请访问:git@code.aliyun.com:289804201/PatternLearn.git 使用场景:多维度耦合的情况,不希望用继承的情况; 优点:减少了类的数量和和代码量,避免

didiao11300的专栏 285

桥接模式 BridgePattern

抽象部分using System; using System.Collections.Generic; using System.Text; namespace BridgePattern { public class Worker { private string _Age; private string _Name;

GhostHouse 1677

JAVA设计模式之桥接模式

转自http://www.kongzid.com/archives/design9,桥接模式(Bridge Pattern),又称为柄体(Handle and Body)模式或接口(Interface)模式。将抽象部分与它的实现分离,并不是说让抽象类与其派生类分离,而是用抽象类和它的派生类用来实现自己的对象。(将抽象化(Abstraction)与实现化Implementation)脱耦,使得二者可以独立地变化) 从众多的事物中抽取出共同的、本质...

孔子说 945

蜗牛星际B双 安装黑群晖7.1(U盘引导)

蜗牛星际B双 安装黑群晖7.1

vistaup的博客 3万+

NAS搭建的过程记录

蜗牛星际C款。

FPGA艺术家的博客 102

如何穿黑裙:黑群晖安装和设置纯文字流水账

硬件准备: 旧电脑一台 或 DIY NAS机一台 或 软路由一台等能装黑裙的设备 U盘一个,硬盘一个。只用来引导系统,且装了引导后剩下的空间不能再用。建议U盘,硬盘有点浪费空间。 软件准备: 根据硬件,准备群晖引导文件和安装包。 群晖NAS的CPU https://kb.synology.com/en-global/DSM/tutorial/What_kind_of_CPU_does_my_NAS_have Intel 4代及以上的CPU,用1.04b的引导,装DS918+的,...

weixin_47112264的博客 1万+

群晖“找不到ip”修复小记(3)

群晖找不到ip,恢复方法

wmsuccess的专栏 1万+

小白的proxmox ve(pve)打造AIO(all in boom)折腾日记 (六)黑群晖nas虚拟机建立(包括群晖安装使用及docker jellyfin、qbittorrent的安装使用)

很多人搞aio主机的最终目的就在于搞一个nas,群晖系统算是nas中用户用的比较多的,各种软件做的也相对比较好。我这里安装的是黑群晖DS918-7.01。

m0_59885919的博客 1万+
上一篇: 单件模式之可乐瓶实现
下一篇: 桥接模式实现
GZFStudy
博客等级 码龄20年 42粉丝 62原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值