pythonアダプター設計モードを実現する最も簡単な例
アダプターの設計モードはいくつかのコードを変えるのがおっくうで、あるいはいくつかのインターフェースが変えにくい時、1つの特定のパッケージを使って、いくつかの特定の編纂方法、異なったインターフェースに同じ種類の呼び出し方式を使って使うことができます。
もっと簡単に話すと、例えばいくつかの異なるインターフェースaliyun、qiniuyun、tencentyunは新規インターフェースであり、以前はインタフェースyunを使ってファイルのバックアップを行っていましたが、今はそれぞれの呼び出しが煩雑で、yunを使ってaliyun、qiniuyun、tencentyunを使ってファイルをアップロードします。この時はアダプターを書く必要があります。
今は簡単な例を見ます。Uploadはアップロードクラスです。中にはyun方法があります。
まずyunのオブジェクトを新規作成します。
名前を統一したらもう一度パッケージして、一括して呼び出すことができます。
全体コードは以下の通りです。
もっと簡単に話すと、例えばいくつかの異なるインターフェース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方法を全部使って統一インターフェースの名前をupoloadyunにしたいです。アダプターを作成する必要があります。コードは以下の通りです。
class Adapter:
def __init__(self,yun,func):
self.yun=yun
self.__dict__.update(func)
init方法は2つのパラメータを受信します。一つはyun、yunはyunオブジェクト、つまりAliUpload、QiniuUpload、TencntUpload及び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))
私たちはuplloadyunメソッド名を使って一括して呼び出す必要がありますので、キーは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アダプターの設計モードの内容は以前の文章を検索したり、以下の関連記事を見たりしてください。これからもよろしくお願いします。