中国建设企业银行官网站重庆专业建网站

张小明 2026/1/9 16:02:20
中国建设企业银行官网站,重庆专业建网站,网站做得好的公司,龙岩网站推广公司Python 中的桥接模式#xff08;Bridge Pattern#xff09; 桥接模式是一种结构型设计模式#xff0c;其核心目的是#xff1a; 将抽象部分#xff08;Abstraction#xff09;与实现部分#xff08;Implementation#xff09;分离#xff0c;使它们可以独立变化。 形…Python 中的桥接模式Bridge Pattern桥接模式是一种结构型设计模式其核心目的是将抽象部分Abstraction与实现部分Implementation分离使它们可以独立变化。形象比喻就像一座桥连接两岸——“抽象”和“实现”本来紧密耦合通过桥接模式把它们分开让两岸各自发展而不互相影响。为什么需要桥接模式如果不使用桥接模式当抽象和实现都有多个变体时会产生类爆炸Cartesian product例如形状圆、正方形 × 渲染方式矢量、光栅 → 需要 2 × 2 4 个类如果再加一种形状或一种渲染方式就需要新增更多类。桥接模式通过组合而不是继承来解决这个问题。典型应用场景GUI 框架窗口抽象 vs 不同平台实现Windows、Mac、Linux绘图程序形状抽象 vs 渲染器矢量、像素、光追驱动程序设备抽象 vs 不同协议实现消息发送消息类型文本、图片 vs 发送渠道邮件、短信、推送Python 实现示例形状 渲染器fromabcimportABC,abstractmethod# 实现部分ImplementationclassRenderer(ABC):abstractmethoddefrender_circle(self,radius:float):passabstractmethoddefrender_square(self,side:float):pass# 具体实现1矢量渲染classVectorRenderer(Renderer):defrender_circle(self,radius:float):print(f矢量渲染绘制半径为{radius}的圆)defrender_square(self,side:float):print(f矢量渲染绘制边长为{side}的正方形)# 具体实现2光栅渲染像素classRasterRenderer(Renderer):defrender_circle(self,radius:float):print(f光栅渲染绘制半径为{radius}的圆像素点)defrender_square(self,side:float):print(f光栅渲染绘制边长为{side}的正方形像素填充)# 抽象部分AbstractionclassShape(ABC):def__init__(self,renderer:Renderer):self.rendererrenderer# 通过组合持有实现abstractmethoddefdraw(self):passabstractmethoddefresize(self,factor:float):pass# 细化抽象圆classCircle(Shape):def__init__(self,renderer:Renderer,radius:float):super().__init__(renderer)self.radiusradiusdefdraw(self):self.renderer.render_circle(self.radius)defresize(self,factor:float):self.radius*factorprint(f圆形调整大小新半径{self.radius})# 细化抽象正方形classSquare(Shape):def__init__(self,renderer:Renderer,side:float):super().__init__(renderer)self.sidesidedefdraw(self):self.renderer.render_square(self.side)defresize(self,factor:float):self.side*factorprint(f正方形调整大小新边长{self.side})# 客户端使用if__name____main__:# 可以自由组合抽象和实现vectorVectorRenderer()rasterRasterRenderer()circle1Circle(vector,5)circle1.draw()# 矢量圆circle1.resize(2)circle1.draw()circle2Circle(raster,10)circle2.draw()# 光栅圆squareSquare(vector,4)square.draw()# 切换渲染器非常容易another_circleCircle(raster,3)another_circle.draw()输出矢量渲染绘制半径为 5 的圆 圆形调整大小新半径 10.0 矢量渲染绘制半径为 10.0 的圆 光栅渲染绘制半径为 10 的圆像素点 矢量渲染绘制边长为 4 的正方形 光栅渲染绘制半径为 3 的圆像素点现在新增一种形状如 Triangle只需继承 Shape新增一种渲染器如 OpenGLRenderer只需实现 Renderer 接口无需修改现有代码。桥接模式结构总结角色说明Abstraction抽象类Shape持有 Implementation 引用RefinedAbstraction细化抽象Circle、SquareImplementor实现接口RendererConcreteImplementor具体实现VectorRenderer、RasterRenderer桥接模式 vs 其他模式对比模式目的组合 vs 继承典型场景桥接分离抽象与实现独立变化组合多维度变化如平台功能适配器接口转换组合整合不兼容接口策略算法可替换组合行为变化装饰器动态添加职责组合功能增强Python 中的实用建议Python 是动态语言桥接模式实现非常自然通过组合注入实现。常与依赖注入结合使用。在 GUI、游戏引擎、跨平台库中非常常见如 PyQt/PySide 的后台实现。不要与继承混用过度——桥接强调“组合优于继承”。更现实的例子消息发送系统classMessageSender(ABC):abstractmethoddefsend(self,message:str):passclassEmailSender(MessageSender):defsend(self,message:str):print(f通过 Email 发送:{message})classSMSSender(MessageSender):defsend(self,message:str):print(f通过 SMS 发送:{message})classMessage(ABC):def__init__(self,sender:MessageSender):self.sendersenderabstractmethoddefprepare(self)-str:passdefsend_message(self):contentself.prepare()self.sender.send(content)classTextMessage(Message):def__init__(self,sender,text):super().__init__(sender)self.texttextdefprepare(self):returnf文本消息:{self.text}classUrgentMessage(Message):defprepare(self):returnf【紧急】{self.text.upper()}!!!# 使用自由组合email_textTextMessage(EmailSender(),会议通知)email_text.send_message()sms_urgentUrgentMessage(SMSSender(),火警警报)sms_urgent.send_message()桥接模式是处理多维度变化的强大工具在大型系统设计中非常有用。如果你想看更复杂的例子如 GUI 跨平台桥接、数据库驱动桥接或者与其他模式如抽象工厂结合使用欢迎继续问
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

开发一个手机网站要多少钱seo针对网站做策划

表情迁移高保真融合:FaceFusion让虚拟人更真实 在短视频、虚拟主播和元宇宙内容爆发的今天,我们对“数字人脸”的要求早已不再是简单地换张脸。观众越来越敏锐——哪怕是一丝嘴角不自然的抽动、一抹肤色突兀的过渡,都会立刻打破沉浸感。传统换…

张小明 2026/1/3 0:35:51 网站建设

因网站建设关闭的公告企业模板之家

第一章:Open-AutoGLM移动端落地的技术背景随着大语言模型在自然语言处理领域的广泛应用,如何将高性能的生成式AI模型轻量化并部署至移动端设备,成为工业界关注的核心问题。Open-AutoGLM 作为基于 AutoGLM 架构开源优化的推理框架,…

张小明 2026/1/2 10:26:46 网站建设

php和asp做网站哪个好和城乡建设厅官方网站

一、毕业论文任务书毕 业 论 文题 目基于数据挖掘的社交媒体舆情分析与情感预测系统设计与实现起 止 日 期2024年11月27日 至2024年12月6日姓 名专业、班级数据科学与大数据技术2170302指导教师曹崴论文内容及进度安排:一、主要内容本次毕业设计的主…

张小明 2026/1/2 20:46:54 网站建设

制作百度移动网站模板免费下载网站建设方案书阿里云模板

第一章:Open-AutoGLM 人机协同操作新模式Open-AutoGLM 是一种面向智能自动化任务的新型人机协同框架,旨在通过大语言模型与用户指令的深度交互,实现复杂操作流程的自主规划与执行。该模式突破传统脚本化自动化的局限,引入语义理解…

张小明 2026/1/2 22:57:46 网站建设

做网站 广州百度网站推广咨询

云存储同步神器rclone:7天快速上手完整指南 【免费下载链接】rclone 项目地址: https://gitcode.com/gh_mirrors/rcl/rclone 还在为多个云存储账户的管理而烦恼吗?rclone作为一款专业的云存储同步工具,能够帮你轻松解决跨平台文件同步…

张小明 2026/1/8 9:18:01 网站建设