Python 桥接模式讲解和代码示例

简介: Python 桥接模式讲解和代码示例

桥接是一种结构型设计模式 可将业务逻辑或一个大类拆分为不同的层次结构 从而能独立地进行开发

层次结构中的第一层 通常称为抽象部分 将包含对第二层 实现部分 对象的引用 抽象部分将能将一些 有时是绝大部分 对自己的调用委派给实现部分的对象 所有的实现部分都有一个通用接口 因此它们能在抽象部分内部相互替换

进一步了解桥接模式


使用示例桥接模式在处理跨平台应用 支持多种类型的数据库服务器或与多个特定种类 例如云平台和社交网络等 的 API 供应商协作时会特别有用

识别方法桥接可以通过一些控制实体及其所依赖的多个不同平台之间的明确区别来进行识别

概念示例

本例说明了桥接设计模式的结构并重点回答了下面的问题

  • 它由哪些类组成
  • 这些类扮演了哪些角色
  • 模式中的各个元素会以何种方式相互关联

main.py: 概念示例


from __future__ import annotationsfrom abc import ABC, abstractmethodclass Abstraction:    """    The Abstraction defines the interface for the "control" part of the two    class hierarchies. It maintains a reference to an object of the    Implementation hierarchy and delegates all of the real work to this object.    """
    def __init__(self, implementation: Implementation) -> None:        self.implementation = implementation
    def operation(self) -> str:        return (f"Abstraction: Base operation with:\n"
                f"{self.implementation.operation_implementation()}")class ExtendedAbstraction(Abstraction):    """    You can extend the Abstraction without changing the Implementation classes.    """
    def operation(self) -> str:        return (f"ExtendedAbstraction: Extended operation with:\n"
                f"{self.implementation.operation_implementation()}")class Implementation(ABC):    """    The Implementation defines the interface for all implementation classes. It    doesn't have to match the Abstraction's interface. In fact, the two    interfaces can be entirely different. Typically the Implementation interface    provides only primitive operations, while the Abstraction defines higher-    level operations based on those primitives.    """
    @abstractmethod
    def operation_implementation(self) -> str:        pass"""Each Concrete Implementation corresponds to a specific platform and implementsthe Implementation interface using that platform's API."""class ConcreteImplementationA(Implementation):    def operation_implementation(self) -> str:        return "ConcreteImplementationA: Here's the result on the platform A."class ConcreteImplementationB(Implementation):    def operation_implementation(self) -> str:        return "ConcreteImplementationB: Here's the result on the platform B."def client_code(abstraction: Abstraction) -> None:    """    Except for the initialization phase, where an Abstraction object gets linked    with a specific Implementation object, the client code should only depend on    the Abstraction class. This way the client code can support any abstraction-    implementation combination.    """
    # ...
    print(abstraction.operation(), end="")    # ...if __name__ == "__main__":    """    The client code should be able to work with any pre-configured abstraction-    implementation combination.    """
    implementation = ConcreteImplementationA()    abstraction = Abstraction(implementation)    client_code(abstraction)    print("\n")    implementation = ConcreteImplementationB()    abstraction = ExtendedAbstraction(implementation)    client_code(abstraction)


Output.txt: 执行结果



Abstraction: Base operation with:
ConcreteImplementationA: Here's the result on the platform A.
ExtendedAbstraction: Extended operation with:
ConcreteImplementationB: Here's the result on the platform B.
相关文章
|
22天前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
129 26
|
25天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
167 1
|
28天前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
111 1
|
11天前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
196 100
|
11天前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
214 95
|
19天前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
174 104
|
19天前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
304 99
|
11天前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
129 88
|
26天前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
198 102
|
16天前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。

推荐镜像

更多
下一篇
oss教程