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.
相关文章
|
6天前
|
Python
Python代码扫描目录下的文件并获取路径
【5月更文挑战第12天】Python代码扫描目录下的文件并获取路径
24 1
|
6天前
|
数据处理 Python
Python 代码中使用。
Python 代码中使用。 z
14 3
|
6天前
|
C++ 开发者 Python
实现Python日志点击跳转到代码位置的方法
本文介绍了如何在Python日志中实现点击跳转到代码位置的功能,以提升调试效率。通过结合`logging`模块的`findCaller()`方法记录代码位置信息,并使用支持点击跳转的日志查看工具(如VS Code、PyCharm),开发者可以从日志直接点击链接定位到出错代码,加快问题排查。
15 2
|
6天前
|
算法 Java 编译器
优化Python代码性能的实用技巧
提高Python代码性能是每个开发者的关注焦点之一。本文将介绍一些实用的技巧和方法,帮助开发者优化他们的Python代码,提升程序的执行效率和性能。
|
1天前
|
数据采集 数据挖掘 Python
最全妙不可言。写出优雅的 Python 代码的七条重要技巧,2024年最新被面试官怼了还有戏吗
最全妙不可言。写出优雅的 Python 代码的七条重要技巧,2024年最新被面试官怼了还有戏吗
|
1天前
|
存储 缓存 API
python源码解读_python代码解释
python源码解读_python代码解释
520专属——使用Python代码表白究竟能不能成功?
520,谐音:“我爱你”,一直觉得,520真正的意义,不单是用于表达爱,也不是为了收礼物和红包,而是提醒我们,不要忘记爱与被爱。 废话不多说,下面整理了9个效果图和参考代码,感兴趣的朋友可以看看
|
1天前
|
机器学习/深度学习 数据采集 数据挖掘
90%的人说Python程序慢,5大神招让你的代码像赛车一样跑起来_代码需要跑很久怎么办(2)
90%的人说Python程序慢,5大神招让你的代码像赛车一样跑起来_代码需要跑很久怎么办(2)
|
1天前
|
Python
|
3天前
|
缓存 开发者 Python
Python中的装饰器:提升代码灵活性与可复用性
众所周知,Python作为一门流行的编程语言,其装饰器(Decorator)机制为代码的优化和重用提供了强大支持。本文将深入探讨Python中装饰器的概念、用法和实际应用,帮助读者更好地理解并应用这一技术,从而提升代码的灵活性和可复用性。