python 最简单的实现适配器设计模式的示例

 更新时间:2020年06月30日 10:10:21   作者:1_bit  
这篇文章主要介绍了python 最简单的实现适配器设计模式的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

适配器设计模式是懒得改动某些代码,或者某些接口不方便改动的时候,使用一个特定的封装,一些特定的编写办法,使不同的接口可以使用同种调用方式使用。

更简单的说话则是,例如几个不同的接口 aliyun、qiniuyun、tencentyun是新增的接口,以前都是使用接口yun进行文件备份,现在每一种调用不同名都太烦,统一使用yun去进行aliyun、qiniuyun、tencentyun上传文件。这个时候就需要写一个适配器。

现在看一个简单例子,有一个类为Upload 是一个上传类,里面有一个方法是yun方法:

class Upload:
  def yun(self):
    return '...... Uploading '

之后又新增了3个上传类,分别是 AliUpload、QiniuUpload、TencentUpload,如下代码:

class AliUpload:
  def aliyun(self):
    return '......aliyun Uploading '


class QiniuUpload:
  def qiniuyun(self):
    return '......qiniuyun Uploading ' 
    
class TencentUpload:
  def tencentyun(self):
    return '......tencentyun Uploading ' 

现在我想让它们里面的yun 方法都使用统一接口名为 uploadyun,需要编写一个适配器,代码如下:

class Adapter:
  def __init__(self,yun,func):
    self.yun=yun
    self.__dict__.update(func)

init 方法接收两个参数,一个是yun,yun是yun对象,也就是 AliUpload、QiniuUpload、TencentUpload以及Upload 的对象,还有一个是func,需要统一名称的方法字典。调用方式如下:(代码比较冗余,不过对于某一部分读者会很直观)

首先新建yun的对象:

yun_obj=Upload()
aliyun_obj=AliUpload()
qiniuyun_obj=QiniuUpload()
tencentyun_obj=TencentUpload()

随后新建适配器对象,并且把以上的对象及方法传入到适配器初始化方法中:

aptyun=Adapter(yun_obj,dict(uploadyun=yun_obj.yun))
aptali=Adapter(aliyun_obj,dict(uploadyun=aliyun_obj.aliyun))
aptqiniu=Adapter(qiniuyun_obj,dict(uploadyun=qiniuyun_obj.qiniuyun))
apttencent=Adapter(tencentyun_obj,dict(uploadyun=tencentyun_obj.tencentyun))

由于我们需要通过使用调用 uploadyun 方法名统一调用,所以键为uploadyun,之后会成为类成员变量;最后直接用适配器对象进行统一名称的方法调用:

print(aptyun.uploadyun())
print(aptali.uploadyun())
print(aptqiniu.uploadyun())
print(apttencent.uploadyun())

结果如下:


统一名称后可以再一次封装,进行统一调用(此内容不是本文内容不再赘述)。

整体代码如下:

class Upload:
  def yun(self):
    return '...... Uploading '

class AliUpload:
  def aliyun(self):
    return '......aliyun Uploading '


class QiniuUpload:
  def qiniuyun(self):
    return '......qiniuyun Uploading ' 
    
class TencentUpload:
  def tencentyun(self):
    return '......tencentyun Uploading ' 
    
class Adapter:
  def __init__(self,yun,func):
    self.yun=yun
    self.__dict__.update(func)

#新建类
yun_obj=Upload()
aliyun_obj=AliUpload()
qiniuyun_obj=QiniuUpload()
tencentyun_obj=TencentUpload()
#适配器类
aptyun=Adapter(yun_obj,dict(uploadyun=yun_obj.yun))
aptali=Adapter(aliyun_obj,dict(uploadyun=aliyun_obj.aliyun))
aptqiniu=Adapter(qiniuyun_obj,dict(uploadyun=qiniuyun_obj.qiniuyun))
apttencent=Adapter(tencentyun_obj,dict(uploadyun=tencentyun_obj.tencentyun))
#统一接口调用示例
print(aptyun.uploadyun())
print(aptali.uploadyun())
print(aptqiniu.uploadyun())
print(apttencent.uploadyun())

到此这篇关于python 最简单的实现适配器设计模式的示例的文章就介绍到这了,更多相关python 适配器设计模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pycharm设置去除显示的波浪线方法

    Pycharm设置去除显示的波浪线方法

    今天小编就为大家分享一篇Pycharm设置去除显示的波浪线方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 最炫Python烟花代码全解析

    最炫Python烟花代码全解析

    2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试
    2022-02-02
  • 将keras的h5模型转换为tensorflow的pb模型操作

    将keras的h5模型转换为tensorflow的pb模型操作

    这篇文章主要介绍了将keras的h5模型转换为tensorflow的pb模型操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python httplib模块使用实例

    Python httplib模块使用实例

    这篇文章主要介绍了Python httplib模块使用实例,httplib模块是一个底层基础模块,本文讲解了httplib模块的常用方法及使用实例,需要的朋友可以参考下
    2015-04-04
  • python实现在目录中查找指定文件的方法

    python实现在目录中查找指定文件的方法

    这篇文章主要介绍了python实现在目录中查找指定文件的方法,通过模糊查找与精确查找两个实例较为详细的阐述了文件查找的方法,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • 学习python的前途 python挣钱

    学习python的前途 python挣钱

    在本文里我们给大家整理了关于学习python的前途以及python挣钱的方法整理,有兴趣的朋友们阅读下。
    2019-02-02
  • python实现简单井字棋小游戏

    python实现简单井字棋小游戏

    这篇文章主要为大家详细介绍了python实现简单井字棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python中处理无效数据的详细教程

    Python中处理无效数据的详细教程

    无效数据是指不符合数据收集目的或数据收集标准的数据,这些数据可能来自于不准确的测量、缺失值、错误标注、虚假的数据源或其他问题,本文就将带大家学习Python中如何处理无效数据,感兴趣的同学可以跟着小编一起来学习
    2023-06-06
  • python 生成目录树及显示文件大小的代码

    python 生成目录树及显示文件大小的代码

    没啥技术含量,大家都说没用,只不过算法还有点意思。自己憋出来的,不知道是不是跟别人的一样。做递归得到子文件夹以及文件并不难,但是能够打印出树形,层次关系展示出来,有些难度。
    2009-07-07
  • python 用下标截取字符串的实例

    python 用下标截取字符串的实例

    今天小编就为大家分享一篇python 用下标截取字符串的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12

最新评论