当前位置: 首页 > news >正文

Python 设计模式:桥接模式

1. 什么是桥接模式?

桥接模式是一种结构型设计模式,它通过将抽象部分与其实现部分分离,使得两者可以独立变化。桥接模式的核心思想是将抽象和实现解耦,从而提高系统的灵活性和可扩展性。

桥接模式的核心思想是将一个类的接口与其实现分离,使得两者可以独立变化。通过引入一个桥接接口,客户端可以通过这个接口来操作不同的实现,而不需要关心具体的实现细节。

桥接模式通常包含以下几个组成部分:

  • 抽象类(Abstraction):定义抽象部分的接口,并包含一个对实现部分的引用。
  • 扩展抽象类(Refined Abstraction):扩展抽象类,提供具体的实现。
  • 实现接口(Implementor):定义实现部分的接口。
  • 具体实现类(Concrete Implementor):实现实现接口,提供具体的实现。

桥接模式在软件设计中具有多种优点:

  • 解耦:将抽象部分与实现部分分离,使得两者可以独立变化,降低了系统的耦合度。
  • 灵活性:可以在运行时选择不同的实现,增强了系统的灵活性。
  • 可扩展性:可以通过扩展抽象类和实现类来增加新的功能,而不需要修改现有的代码。
# 实现接口
class DrawingAPI:def draw_circle(self, x, y, radius):pass# 具体实现类:API 1
class DrawingAPI1(DrawingAPI):def draw_circle(self, x, y, radius):print(f"API1: Drawing a circle at ({x}, {y}) with radius {radius} using a solid line.")# 具体实现类:API 2
class DrawingAPI2(DrawingAPI):def draw_circle(self, x, y, radius):print(f"API2: Drawing a circle at ({x}, {y}) with radius {radius} using a dashed line.")# 抽象类
class Shape:def draw(self):passdef resize(self, percentage):pass# 扩展抽象类:圆形
class Circle(Shape):def __init__(self, x, y, radius, drawing_api):self.x = xself.y = yself.radius = radiusself.drawing_api = drawing_apidef draw(self):self.drawing_api.draw_circle(self.x, self.y, self.radius)def resize(self, percentage):self.radius *= percentage# 客户端代码
if __name__ == "__main__":circle1 = Circle(5, 10, 3, DrawingAPI1())  # 使用 API 1circle1.draw()circle2 = Circle(5, 10, 3, DrawingAPI2())  # 使用 API 2circle2.draw()# 调整圆的大小并重新绘制circle1.resize(2)  # 增加半径circle1.draw()  # 使用 API 1 重新绘制
API1: Drawing a circle at (5, 10) with radius 3 using a solid line.
API2: Drawing a circle at (5, 10) with radius 3 using a dashed line.
API1: Drawing a circle at (5, 10) with radius 6 using a solid line.
  1. 实现接口DrawingAPI 类定义了实现部分的接口。

  2. 具体实现类

    • DrawingAPI1 类实现了 DrawingAPI 接口,提供了使用实线绘制圆形的实现。
    • DrawingAPI2 类实现了 DrawingAPI 接口,提供了使用虚线绘制圆形的实现。
  3. 抽象类和扩展抽象类Shape 类定义了抽象部分的接口,Circle 类实现了具体的圆形类,并包含对实现部分的引用。

  4. 客户端代码

    • 在客户端代码中,创建 Circle 对象并指定使用的绘制 API。
    • 调用 draw 方法绘制圆形,circle1 使用 DrawingAPI1,而 circle2 使用 DrawingAPI2,展示了不同的绘制方式。

相关文章:

  • 23种设计模式-结构型模式之桥接模式(Java版本)
  • LangChain4j 搭配 Kotlin:以协程、流式交互赋能语言模型开发
  • 联易融助力乡村振兴,仙湖茶产业焕新机
  • 智能指针之设计模式4
  • 网络安全·第五天·TCP协议安全分析
  • leetcode0207. 课程表-medium
  • WordPress 只能访问html文件,不能访问php
  • (最新)华为 2026 届校招实习-硬件技术工程师-硬件通用/单板开发—机试题—(共14套)(每套四十题)
  • flutter 插件收集
  • 联易融出席深圳链主企业供应链金融座谈会,加速对接票交所系统
  • AI 模型在前端应用中的典型使用场景和限制
  • Activity使用优化
  • Elasticsearch性能优化实践
  • Nacos 2.0.2 在 CentOS 7 上开启权限认证(含 Docker Compose 配置与接口示例)
  • linux 手动触发崩溃
  • 马浩棋:产通链CT-Chain 破局不动产 RWA,引领数智金融新变革
  • 企业微信私域运营,基于http协议实现SCRM+AI完整解决方案
  • 3.1.1 MaterialDesign中DrawerHost使用案例
  • 【架构】ANSI/IEEE 1471-2000标准深度解析:软件密集型系统架构描述推荐实践
  • 【网络】代理服务器收尾及高级IO
  • 举报人不服相关部门奖励“缺斤少两”,两地分别作出再认定
  • 视频·世界读书日|林乾:碎片化阅读或影视综艺≠知识
  • 包邮到高原,跨越4083公里送妈妈一张按摩椅
  • 尹锡悦涉嫌发动内乱案第二次庭审举行
  • 同济研究生开发AI二维码拿下大奖,新一代00后开发者掀起AI创业潮
  • 豫章故郡,剑指演艺经济新高地