博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 设计模式: 桥接模式(bridge pattern)
阅读量:7101 次
发布时间:2019-06-28

本文共 1083 字,大约阅读时间需要 3 分钟。

hot3.png

桥接模式用于将"抽象"(abstraction, 比如接口或算法)与实现方式相分离。

如果不用桥接模式,那么通常的做法是,创建若干个基类用于表示各个抽象方式, 然后从每个基类中继承出两个或多个子类,用于表示对这种抽象方式的不同实现方法。 用了桥接模式之后,我们需要创建两套独立的"类体系"(class hierarchy): "抽象体系" 定义了我们所要执行的操作(比如接口或高层算法),而“实现体系”则包含具体实现方式, 抽象体系要调用实现体系以完成其操作。抽象体系中的类会把实现体系中的某个类实例 聚合进来,而这个实例将充当抽象接口与具体实现之间的桥梁(bridge)。

class OSSClient:    def __init__(self, ...):        self._client = OSS(...)    def url_to_path(self, url):        path = ...        return path    def get_content(self, path):        content = self._client.get_data(path, ...)        return content    def put_content(self, path, content):        self._client.put_data(path, content)class Downloader:    def __init__(self, client):        self._client = client    def download(url, local_path):        with open(local_path, 'wb') as fp:            remote_path = self._client.url_to_path(url)            data = self._client.get_content(remote_path)            fp.write(data)

上面的 OSSClient 即为实现体系类, Downloader 是抽象体系类:

抽象体系中的类(Downloader)会把实现体系中的某个类(OSSClient)实例 聚合进来,而这个实例将充当抽象接口与具体实现之间的桥梁(bridge)。

转载于:https://my.oschina.net/u/2474096/blog/1506092

你可能感兴趣的文章
Func与Action
查看>>
排球积分程序
查看>>
Vim搜索、取消高亮、显示行数、取消行数
查看>>
使用NPOI创建Excel文件
查看>>
会话控制session,cookie(0521)
查看>>
PostgreSQL与MySQL源代码分析之旅(2)下--MySQL源代码结构
查看>>
数论 - Miller_Rabin素数测试 + pollard_rho算法分解质因数 ---- poj 1811 : Prime Test
查看>>
docker 容器启动的模板以及注意事项
查看>>
2018年全国大学生电子设计竞赛
查看>>
三层交换+DHCP实验详解
查看>>
C - Common Subsequence
查看>>
如何以特定的时间间隔为图片添加动画效果?
查看>>
虚拟机mac 与主机的网络共享
查看>>
02 管理企业
查看>>
EventID 6398
查看>>
DNS服务器搭建
查看>>
页面生成周期中的两个Application池的详情小弟了解
查看>>
localhost与127.0.0.1的区别是什么?
查看>>
机器学习算法汇总:人工神经网络、深度学习及其它
查看>>
Android下Affinities和Task
查看>>