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.
相关文章
|
18天前
|
算法 关系型数据库 Python
配电网中考虑需求响应(Python代码实现)【硕士论文复现】
配电网中考虑需求响应(Python代码实现)【硕士论文复现】
|
15天前
|
机器学习/深度学习 算法 安全
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
|
17天前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
|
17天前
|
供应链 新能源 调度
微电网调度(风、光、储能、电网交互)(Matlab&Python代码实现)
微电网调度(风、光、储能、电网交互)(Matlab&Python代码实现)
|
18天前
|
安全 数据处理 Python
Python 函数式编程:让代码更简洁高效
Python 函数式编程:让代码更简洁高效
329 107
|
13天前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
139 92
|
16天前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
|
1月前
|
程序员 数据安全/隐私保护 Python
1行Python代码,实现PDF的加密、解密
程序员晚枫分享使用python-office库实现PDF批量加密与解密的新方法。只需一行代码,即可完成单个或多个PDF文件的加密、解密操作,支持文件路径与正则筛选,适合自动化办公需求。更新至最新版,适配性更佳,操作更简单。
1行Python代码,实现PDF的加密、解密
|
14天前
|
运维 算法 新能源
基于风光储能和需求响应的微电网日前经济调度(Python代码实现)
基于风光储能和需求响应的微电网日前经济调度(Python代码实现)

热门文章

最新文章

推荐镜像

更多