设计模式-结构型模式:桥接模式

简介: 设计模式-结构型模式:桥接模式

1、简介

桥接模式(Bridge pattern)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们都可以独立地变化。从而增加了系统的灵活性和可扩展性。

桥接模式通常用于解决两个相互依存的类之间的耦合关系。

它通过创建一个抽象类或者接口来封装抽象部分,另外再创建一个实现类来封装实现部分,然后将这两部分通过组合的方式结合起来

在桥接模式中,一般有两类角色:

①抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。

②实现化(Implementor)角色:定义实现化对象,供抽象化角色调用。

2、帮助理解

举个例子,假设你想要制造汽车,汽车有两个重要的部分,汽车的品牌和汽车的颜色,你可以在制造汽车时先选择品牌,再选择颜色,这样你就可以得到一辆品牌为XX,颜色为YY的汽车。而使用桥接模式,则可以将品牌和颜色分开来考虑,使得品牌和颜色可以独立变化,从而得到更多的组合。

3、优缺点

桥接模式的优点是:

①分离抽象部分和实现部分,使得它们可以独立变化

②桥接模式提高了系统的扩展性

③实现细节对客户透明,可以对用户隐藏实现细节

缺点是:

①桥接模式会增加系统的理解与设计难度,需要具备较高的技能

②桥接模式会增加系统的复杂度,因为每个抽象部分都需要一个独立的实现部分

③通常来说,桥接模式适用于在多个维度变化的系统中使用。

4、使用场景

两个独立变化的维度都需要进行扩展,且这两个维度可能会相互影响。

桥接模式可以将这两个维度分离开来,使得它们可以独立变化。

在一个类层次结构中,希望多个子类中共享一些公共的行为,且该公共行为可能需要在子类中进行扩展。

当一个类的抽象和它的实现都应该可以扩展的时候,将它们分离出来,使用桥接模式。

当一个对象存在多个维度变化的时候,使用桥接模式可以将这些维度的变化解耦。

5、代码实现

①首先定义一个抽象类,该类中包含一个指向另一个抽象类的引用。该抽象类可以是接口或抽象类。

②然后定义具体的实现类,它们继承抽象类并实现其抽象方法

③最后,定义实现类,它实现了抽象类中的接口。

④在使用时,我们可以通过创建不同的实现类来改变具体的实现方式,而不需要改变抽象类的代码。

总结如上步骤如下:

  1. 定义一个抽象类或接口,表示需要实现的功能->画图形Shape,即抽象部分。
  2. 定义一个抽象类或接口,表示实现的方式,即实现部分->Circle extends Shape。
  3. 创建一个实现类,继承或实现抽象部分和实现部分 ->具体实现的东西:RedCircle implements DrawAPI
  4. 使用实现类对象调用抽象部分的方法,实现对实现部分的操作->Shape redCircle=new Circle(参数)

5.1、图解

相关文章
|
1月前
|
设计模式 开发者
【设计模式】第七篇:和我一起简单认识桥接模式
实现的意思并不是指抽象的派生类,而是指通过组合来代替继承关系,从而降低抽象和具体实现产品两个可变换维度之间的耦合,就像我们的相机品牌和相机产品类型之间的分离
27 4
|
2月前
|
设计模式 Java
【设计模式】JAVA Design Patterns——Bridge(桥接模式)
【设计模式】JAVA Design Patterns——Bridge(桥接模式)
【设计模式】JAVA Design Patterns——Bridge(桥接模式)
|
11天前
|
设计模式 JavaScript
js设计模式【详解】—— 桥接模式
js设计模式【详解】—— 桥接模式
23 6
|
17天前
|
设计模式
桥接模式-大话设计模式
桥接模式-大话设计模式
11 1
|
15天前
|
设计模式 Java 数据库
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
|
16天前
|
设计模式 Java
Java设计模式之桥接模式详解
Java设计模式之桥接模式详解
|
22天前
|
设计模式
设计模式之结构型模式
设计模式之结构型模式
|
2月前
|
设计模式 缓存 监控
JAVA设计模式之结构型模式
结构模型:适配器模型、桥接模型、过滤器模型、组合模型、装饰器模型、外观模型、享受元模型和代理模型。
39 3
|
2月前
|
设计模式
【设计模式系列笔记】桥接模式
桥接模式(Bridge Pattern)是一种结构性设计模式,它将抽象部分与实现部分分离,使它们可以独立变化而互不影响。桥接模式通过组合而不是继承的方式来实现这种分离。
49 6
|
2月前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~结构型]处理多维度变化——桥接模式
[设计模式Java实现附plantuml源码~结构型]处理多维度变化——桥接模式