小型网站开发教程,电脑版传奇排行榜,公司软件管理软件,建设工程施工合同实例适配器设计模式是懒得改动某些代码#xff0c;或者某些接口不方便改动的时候#xff0c;使用一个特定的封装#xff0c;一些特定的编写办法#xff0c;使不同的接口可以使用同种调用方式使用。
更简单的说话则是#xff0c;例如几个不同的接口 aliyun、qiniuyun、tencent…适配器设计模式是懒得改动某些代码或者某些接口不方便改动的时候使用一个特定的封装一些特定的编写办法使不同的接口可以使用同种调用方式使用。
更简单的说话则是例如几个不同的接口 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.yunyunself.__dict__.update(func)init 方法接收两个参数一个是yunyun是yun对象也就是 AliUpload、QiniuUpload、TencentUpload以及Upload 的对象还有一个是func需要统一名称的方法字典。调用方式如下代码比较冗余不过对于某一部分读者会很直观
首先新建yun的对象
yun_objUpload()
aliyun_objAliUpload()
qiniuyun_objQiniuUpload()
tencentyun_objTencentUpload()随后新建适配器对象并且把以上的对象及方法传入到适配器初始化方法中
aptyunAdapter(yun_obj,dict(uploadyunyun_obj.yun))
aptaliAdapter(aliyun_obj,dict(uploadyunaliyun_obj.aliyun))
aptqiniuAdapter(qiniuyun_obj,dict(uploadyunqiniuyun_obj.qiniuyun))
apttencentAdapter(tencentyun_obj,dict(uploadyuntencentyun_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.yunyunself.__dict__.update(func)#新建类
yun_objUpload()
aliyun_objAliUpload()
qiniuyun_objQiniuUpload()
tencentyun_objTencentUpload()
#适配器类
aptyunAdapter(yun_obj,dict(uploadyunyun_obj.yun))
aptaliAdapter(aliyun_obj,dict(uploadyunaliyun_obj.aliyun))
aptqiniuAdapter(qiniuyun_obj,dict(uploadyunqiniuyun_obj.qiniuyun))
apttencentAdapter(tencentyun_obj,dict(uploadyuntencentyun_obj.tencentyun))
#统一接口调用示例
print(aptyun.uploadyun())
print(aptali.uploadyun())
print(aptqiniu.uploadyun())
print(apttencent.uploadyun())