一、 桥梁(Bridge)模式
桥梁模式是一个非常有用的模式,也是比较复杂的一个模式。熟悉这个模式对于理解面向对象的设计原则,包括"开-闭"原则(OCP)以及组合/聚合复用原则(CARP)都很有帮助。理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格。
桥梁模式的用意
【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。
抽象化
存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同的实体当做同样的实体对待【LISKOV94】。
实现化
抽象化给出的具体实现,就是实现化。
脱耦
所谓耦合,就是两个实体的行为的某种强关联。而将它们的强关联去掉,就是耦合的解脱,或称脱耦。在这里,脱耦是指将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联。
将两个角色之间的继承关系改为聚合关系,就是将它们之间的强关联改换成为弱关联。因此,桥梁模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化。这就是桥梁模式的用意。
二、 桥梁模式的结构
桥梁模式【GOF95】是对象的结构模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。
下图所示就是一个实现了桥梁模式的示意性系统的结构图。
可以看出,这个系统含有两个等级结构,也就是:
- 由抽象化角色和修正抽象化角色组成的抽象化等级结构。
- 由实现化角色和两个具体实现化角色所组成的实现化等级结构。
桥梁模式所涉及的角色有:
- 抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。
- 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
- 实
现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实
际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
- 具体实现化(Concrete Implementor)角色:这个角色给出实现化角色接口的具体实现。
- 大小: 5.5 KB
分享到:
相关推荐
设计模式C++学习之桥梁模式(Bridge)
11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、...
一、桥梁模式结构图 二、桥梁模式中主要角色 抽象化(Abstraction)角色:定义抽象类的接口并保存一个对实现化对象的引用。 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义...
本文实例讲述了PHP设计模式:桥连模式Bridge。分享给大家供大家参考,具体如下: 1. 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向...
策略模式【STRATEGY PATTERN】 ...桥梁模式【BRIDGE PATTERN】 命令模式【COMMAND PATTERN】 装饰模式【DECORATOR PATTERN】 迭代器模式【ITERATOR PATTERN】 组合模式【COMPOSITE PATTERN】 ......
六、 在什么情况下应当使用桥梁模式 158 设计模式(17)-Chain of Responsibility Pattern 158 一、 职责链(Chain of Responsibility)模式 160 二、 责任链模式的结构 160 三、 责任链模式的示意性源代码 160 四...
六、 在什么情况下应当使用桥梁模式 设计模式(17)-Chain of Responsibility Pattern 一、 职责链(Chain of Responsibility)模式 二、 责任链模式的结构 三、 责任链模式的示意性源代码 四、 纯的与不纯的...
如桥梁模式(Bridge Pattern) 定义:Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦,使得两者可以独立地变化。) ● Abstraction——抽象化角色 它...
com.javapatterns.bridge 桥梁模式 com.javapatterns.builder 建造者模式 com.javapatterns.carp 组合/聚合复用原则 com.javapatterns.chainofresp 责任链模式 com.javapatterns.chainofresp.scheduler 专题:...
第 11 章 桥梁模式【BRIDGE PATTERN】 97 第 12 章 命令模式【COMMAND PATTERN】 112 第 13 章 装饰模式【DECORATOR PATTERN】 126 第 14 章 迭代器模式【ITERATOR PATTERN】 137 第 15 章 ...
桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关 桥梁模式 联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是 继承关系,从而使两者可以独立的...
桥接示例马尔马拉大学 OOP 课堂作业 - 桥梁设计模式示例
桥梁Bridge 不变Immutable 策略Strategy 模版Template 观察者Observer 命令Command 备忘录Memento 状态State 访问者Visitor 解释器Interpreter 调停者Mediator Iterator 责任链Chain of Responsibility
家庭助理的环桥,暴露获取/设置位置模式。 Ring 令牌会自动刷新。 该桥接器可用于根据居民的自动存在检测自动设置环形定位模式,从而在家里启用混合传感器和全自动报警系统,例如以下内容。 安装 在 Home Assistant...
bridge)模式 桥梁模式是一个非常有用的模式,也是比较复杂的一个模式。熟悉这个模式对于理解面向对象的设计原则,包括"开-闭
该主题包含几个内容部分,具有悬停效果的响应式投资组合网格,整页投资组合项目模式,响应式时间表和有效PHP联系人表格。 预览 地位 下载及安装 要开始使用此模板,请选择以下选项之一以开始使用: 通过npm安装: ...
2.发送消息时不支持消息的回调,也就是说发布订阅模式,不支持同一条消息的反向通信 综上两个问题给开发造成了很多设计及代码量上的麻烦 利用window对象提供的以上方法,我们做一下简单的封装,能很好地解决以上两...
该存储库提供了Razer网络与其他分散网络之间的桥梁。 概要 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 先决条件 您需要安装npm或yarn来构建此项目。 这是入门资源的链接。 ...