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

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

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、图解

相关文章
|
26天前
|
设计模式 PHP 开发者
PHP中的设计模式:桥接模式的解析与应用
在软件开发的浩瀚海洋中,设计模式如同灯塔一般,为开发者们指引方向。本文将深入探讨PHP中的一种重要设计模式——桥接模式。桥接模式巧妙地将抽象与实现分离,通过封装一个抽象的接口,使得实现和抽象可以独立变化。本文将阐述桥接模式的定义、结构、优缺点及其应用场景,并通过具体的PHP示例代码展示如何在实际项目中灵活运用这一设计模式。让我们一起走进桥接模式的世界,感受它的魅力所在。
|
2月前
|
设计模式 自然语言处理 算法
PHP中的设计模式:桥接模式的深入探索与应用
在PHP开发中,理解并运用设计模式是提升代码质量与可维护性的关键。本文聚焦于桥接模式——一种结构型设计模式,它通过封装一个抽象的接口,将实现与抽象分离,从而使得它们可以独立变化。不同于传统摘要的概述式表述,本文将以故事化的情境引入,逐步解析桥接模式的精髓,通过PHP代码示例详细展示其在实际项目中的应用,旨在为读者提供一个既深刻又易于理解的学习体验。
25 1
|
2月前
|
设计模式 Java
Java设计模式-桥接模式(9)
Java设计模式-桥接模式(9)
|
1月前
|
设计模式 Java
Java设计模式之桥接模式
这篇文章介绍了Java设计模式中的桥接模式,包括桥接模式的目的、实现方式,并通过具体代码示例展示了如何分离抽象与实现,使得两者可以独立变化。
42 0
|
3月前
|
设计模式 存储 Java
【十】设计模式~~~结构型模式~~~享元模式(Java)
文章详细介绍了享元模式(Flyweight Pattern),这是一种对象结构型模式,通过共享技术实现大量细粒度对象的重用,区分内部状态和外部状态来减少内存中对象的数量,提高系统性能。通过围棋棋子的设计案例,展示了享元模式的动机、定义、结构、优点、缺点以及适用场景,并探讨了单纯享元模式和复合享元模式以及与其他模式的联用。
【十】设计模式~~~结构型模式~~~享元模式(Java)
|
3月前
|
设计模式 存储 Java
【九】设计模式~~~结构型模式~~~外观模式(Java)
文章详细介绍了外观模式(Facade Pattern),这是一种对象结构型模式,通过引入一个外观类来简化客户端与多个子系统之间的交互,降低系统的耦合度,并提供一个统一的高层接口来使用子系统。通过文件加密模块的实例,展示了外观模式的动机、定义、结构、优点、缺点以及适用场景,并讨论了如何通过引入抽象外观类来提高系统的可扩展性。
【九】设计模式~~~结构型模式~~~外观模式(Java)
|
3月前
|
设计模式 Java
【八】设计模式~~~结构型模式~~~装饰模式(Java)
文章详细介绍了装饰模式(Decorator Pattern),这是一种对象结构型模式,用于在不使用继承的情况下动态地给对象添加额外的职责。装饰模式通过关联机制,使用装饰器类来包装原有对象,并在运行时通过组合的方式扩展对象的行为。文章通过图形界面构件库的设计案例,展示了装饰模式的动机、定义、结构、优点、缺点以及适用场景,并提供了Java代码实现和应用示例。装饰模式提高了系统的灵活性和可扩展性,适用于需要动态、透明地扩展对象功能的情况。
【八】设计模式~~~结构型模式~~~装饰模式(Java)
|
3月前
|
设计模式 XML 存储
【七】设计模式~~~结构型模式~~~桥接模式(Java)
文章详细介绍了桥接模式(Bridge Pattern),这是一种对象结构型模式,用于将抽象部分与实现部分分离,使它们可以独立地变化。通过实际的软件开发案例,如跨平台视频播放器的设计,文章阐述了桥接模式的动机、定义、结构、优点、缺点以及适用场景,并提供了完整的代码实现和测试结果。桥接模式适用于存在两个独立变化维度的系统,可以提高系统的可扩展性和灵活性。
【七】设计模式~~~结构型模式~~~桥接模式(Java)
|
3月前
|
设计模式 XML 存储
【六】设计模式~~~结构型模式~~~适配器模式(Java)
文章详细介绍了适配器模式(Adapter Pattern),这是一种结构型设计模式,用于将一个类的接口转换成客户期望的另一个接口,使原本不兼容的接口能够一起工作,提高了类的复用性和系统的灵活性。通过对象适配器和类适配器两种实现方式,展示了适配器模式的代码应用,并讨论了其优点、缺点以及适用场景。
|
3月前
|
设计模式 缓存 Java
【十一】设计模式~~~结构型模式~~~代理模式(Java)
文章详细介绍了代理模式(Proxy Pattern),这是一种对象结构型模式,用于给对象提供一个代理以控制对它的访问。文中阐述了代理模式的动机、定义、结构、优点、缺点和适用环境,并探讨了远程代理、虚拟代理、保护代理等不同代理形式。通过一个商务信息查询系统的实例,展示了如何使用代理模式来增加身份验证和日志记录功能,同时保持客户端代码的无差别对待。此外,还讨论了代理模式在分布式技术和Spring AOP中的应用,以及动态代理的概念。
【十一】设计模式~~~结构型模式~~~代理模式(Java)