Java23种设计模式-结构型模式之桥接模式

news/2024/11/14 3:18:37/

桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化

通常以下角色:
角色1.抽象类(Abstraction):定义抽象接口。
角色2.扩展抽象类(Refined Abstraction):扩展抽象类,添加具体的功能。
角色3.实现类(Implementor):定义实现接口。
角色4.具体实现类(Concrete Implementor):实现实现类的具体方法。

优点包括:
抽象和实现的分离:使得抽象部分和实现部分可以独立地进行扩展和修改。
更好的可扩展性:可以方便地添加新的抽象类和实现类。
灵活组合:可以根据具体需求组合不同的抽象和实现。
提高复用性:抽象部分和实现部分都可以被复用。

缺点包括:
增加系统复杂性:引入了额外的类和对象,可能会增加系统的复杂性。
理解难度增加:对于不熟悉该模式的开发者来说,理解和使用可能会有一定难度。
开发成本增加:在设计和实现过程中需要花费更多的时间和精力。
代码可读性降低:过多的类和对象可能会降低代码的可读性。
维护成本增加:当系统规模增大时,维护成本也会相应增加。

应用场景
1.图形系统:可以将图形的表现形式和绘制方式分离,以便更灵活地扩展和组合。
2.软件配置:将配置的不同部分(如界面显示和数据处理)分离。
3.媒体播放器:将媒体的不同格式和播放方式进行分离。
4.数据库访问:把数据库操作和具体的数据库类型进行分离。
5.操作系统API:使操作系统的不同功能和具体实现分开。
6.文件格式处理:把文件的逻辑和物理存储方式分开。
7.游戏开发:例如,将游戏角色的行为和具体的动画效果分离。
8.电子设备驱动:将设备的通用功能和特定硬件的实现分开。
通过使用桥接模式,可以提高系统的灵活性、可扩展性和可维护性,使系统更易于扩展和修改。

示例:Abstraction 是抽象部分,它定义了一个 performOperation 方法。ImplementationA 和 ImplementationB 是实现部分,它们分别实现了 Abstraction 的 performOperation 方法。Demo可以通过 Abstraction 接口来调用不同的实现对象,从而实现了抽象与实现的解耦

// 抽象部分
interface Abstraction {void perfprmOperation();
}
// 实现部分
public class ImpleMenttationA implements Abstraction{@Overridepublic void perfprmOperation() {System.out.println("Performing Operation A");}
}
// 实现部分
public class ImpleMenttationB implements Abstraction{@Overridepublic void perfprmOperation() {System.out.println("Performing Operation B");}
}
//Demo
public class BridgePatternDemo {public static void main(String[] args) {Abstraction abstractionA = new ImpleMenttationA();abstractionA.perfprmOperation(); // 输出: Performing Operation AAbstraction abstractionB = new ImpleMenttationA();abstractionB.perfprmOperation(); // 输出: Performing Operation B}}

http://www.ppmy.cn/news/1436692.html

相关文章

MySQL从安装、配置到日常操作和管理的关键步骤

MySQL是一款广泛使用的开源关系型数据库管理系统,用于存储、管理、检索和处理数据。以下是一个详细的MySQL使用教程,包括安装、基本操作、数据管理、权限控制、备份与恢复等方面的内容: 一、MySQL安装 下载: 访问MySQL官方网站&a…

打开IIS网站网页错误提示Argument ‘Key must not be null‘ cannot be null.解决方案 Oracle数据库监听

打开网页异常如下: /“应用程序中的服务器错误。 Argument Key must not be null cannot be null.参数名:Key must not be null 客户端 连接oracle 提示:ORA-12541:TNS:无监听程序 按组合键WindowsR,打开运行 输入命令:lsnrctl s…

draw.io: 开启图表绘制的无限可能

图表是沟通和呈现复杂信息的有效工具,在工作、学习甚至生活中都有广泛的应用。作为一款在线图表软件,draw.io提供了简单、直观又功能丰富的界面,让任何人都可以轻松创建专业水准的图表。接下来,我将分享我深入使用draw.io的经验&a…

springboot如何返回中文json,保证顺序。LinkedHashMap应用实例

在业务中有时候需要中文json去进行映射到有些UI上,而springboot都是英文字段 //通过id查询消火栓的基本信息和检测值给POIGetMapping("/queryPOIForHydrant")ApiOperationSupport(order 4)ApiOperation(value "查询所需要的消火栓数据渲染给POI&qu…

网络安全的守护者:防火墙的五个主要功能解析

防火墙是一种网络安全设备,用于保护计算机网络免受未经授权的访问、攻击和恶意软件的侵害。它通过监控、过滤和控制网络流量,实施安全策略,防止不安全的数据包进入或离开受保护的网络。 防火墙的五个主要功能: 1. 访问控制&#…

锁的封装和RAII实现

RAII(Resource Acquisition Is Initialization)是一种 C 中的编程技术,它利用了对象的生命周期和析构函数的特性来管理资源的获取和释放。在 RAII 中,资源的获取和释放都与对象的生命周期相关联,资源在对象构造时被获取…

【学习AI-相关路程-自我总结-相关入门-自我学习-NVIDIA-Jetson】

【学习AI-相关路程-自我总结-相关入门-自我学习】 1、前言2、思考前进方向3、学习路线1、基础知识阶段2、初级准备阶段3、中级学习阶段4、高级实战阶段 4、自我的努力5、学习平台6、自己总结 1、前言 最近AI相关比较火的,对于程序员,或者走这行的人来说…

FPV眼镜和VR眼镜的区别,穿越机搭配FPV眼镜优缺点分析

FPV眼镜,即第一人称视角(First Person View)眼镜,是专为无人机、穿越机、遥控模型等飞行设备设计的头戴式显示器。这种设备能够将飞行设备上的摄像头所捕捉的实时图像传输到眼镜中,让佩戴者仿佛亲自驾驶飞行器一样&…