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

来源:脚本之家  责任编辑:小易  

includeincludeincludeint main(int argc,char*argv[]){OleInitialize(0);CoInitialize(0);QCoreApplication a(argc,argv);QAxObject*asdfg=new QAxObject("Excel.Application");return a.exec();}www.zgxue.com防采集请勿采集本网。

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

可以执行内部命令啊 试了一下 os.system(\"dir\") os.system(\"md testdir\") 都可以正常执行

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

Python中实现socket通信,socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块实现,而服务端用有很多模块可以使用。

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

文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。数据库编程:程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与

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

这也是为什么我们称Python语言为动态类型的原因(这里我们把动态类型可以简单的归结为对变量内存地址的分配是在运行时自动判断变量 类型并对变量进行赋值)。二、引用计数: Python采用了类似Windows内核

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

需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。7月20日,IEEE发布2017年编程语言排行榜:Python高居首位。2018年3月,该语言作者在邮件列表上宣布 Python 2.7将于2020

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 适配器设计模式内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

def numberInputer(prompt,quitflat):prompt:输入时的提示信息,quitflag:退出标识字while True:gotter=rawinput(prompt+',"%s"for quit'%quitflag)if gotter=quitflag:breaktry:yield int(gotter)except:continuedegrees=[]for degree in numberInputer(prompt="请输入考试分数",quitflag="Q"):degrees.append(degreee)print"分数中大于60的分数之和",sum(filter(lambda x:x>=60,degrees))内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • python适配器模式代码实现解析
  • python设计模式之适配器模式原理与用法详解
  • python设计模式编程中adapter适配器模式的使用实例
  • python常用模块介绍
  • python利用opencv2实现人脸检测
  • 详解python的数据库操作(pymysql)
  • python实现的des加密算法和3des加密算法实例
  • python基于socket实现网络广播的方法
  • 解决python大批量读写.doc文件的问题
  • 简单介绍python中用于求最小值的min()方法
  • python类定义的讲解
  • php使用递归与迭代实现快速排序示例
  • django项目开发中cookies和session的常用操作分析
  • 怎样用python实现这样一个简单程序
  • python简单地实现几个小代码
  • python如何用散列表实现简单数据库
  • Python怎么能简单实现Base64编码和解码
  • 请教一个简单的用python实现盘符切换的实现
  • 如何通过python实现简单socket通信
  • python能做什么
  • 为什么说Python采用的是基于值的内存管理模式
  • python 适合做什么开发
  • 如何用Python实现简单人脸识别
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页python适配器模式代码实现解析python设计模式之适配器模式原理与用法详解python设计模式编程中adapter适配器模式的使用实例python常用模块介绍python利用opencv2实现人脸检测详解python的数据库操作(pymysql)python实现的des加密算法和3des加密算法实例python基于socket实现网络广播的方法解决python大批量读写.doc文件的问题简单介绍python中用于求最小值的min()方法python类定义的讲解php使用递归与迭代实现快速排序示例django项目开发中cookies和session的常用操作分析python入门教程 超详细1小时学会python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍pycharm 2020最新永久激活码(附python 中文乱码问题深入分析python中使用xlrd、xlwt操作excepython科学计算环境推荐——anacpython使用selenium + headless chrome获python自定义函数的创建、调用和函数的参windows下python2与python3两个版本共存的python pyqt5实现的简易计算器功能示例python实现时间序列自相关图(acf)、偏自相python实现的中国剩余定理算法示例python找出list中最常出现元素的方法python 3.5下xadmin的使用及修复源码bugpython基于pyecharts实现关联图绘制python中pylint使用方法(pylint代码检查)
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved