You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
'''
|
|
|
|
|
适配器模式(Adapter)
|
|
|
|
|
应用:将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类能够一起工作。
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
########################################################################
|
|
|
|
|
# 定义一个目标接口Target和一个与之不兼容的类Adaptee
|
|
|
|
|
############################################################################
|
|
|
|
|
# 目标接口
|
|
|
|
|
class Target:
|
|
|
|
|
def request(self):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
# 需要适配的类
|
|
|
|
|
class Adaptee:
|
|
|
|
|
def specific_request(self):
|
|
|
|
|
print("Called Adaptee's specific_request.")
|
|
|
|
|
|
|
|
|
|
########################################################################
|
|
|
|
|
# 定义一个适配器类Adapter,它实现了Target接口,并且持有Adaptee的实例,
|
|
|
|
|
# 从而能够在request方法中调用Adaptee的specific_request方法
|
|
|
|
|
# 一个继承,一个当参数加入构造函数
|
|
|
|
|
############################################################################
|
|
|
|
|
# 适配器
|
|
|
|
|
class Adapter(Target):
|
|
|
|
|
def __init__(self, adaptee):
|
|
|
|
|
self.adaptee = adaptee
|
|
|
|
|
|
|
|
|
|
def request(self):
|
|
|
|
|
# 调用Adaptee的specific_request方法
|
|
|
|
|
self.adaptee.specific_request()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
# 创建Adaptee实例
|
|
|
|
|
adaptee = Adaptee()
|
|
|
|
|
|
|
|
|
|
# 创建Adapter实例,将Adaptee实例作为参数传递
|
|
|
|
|
adapter = Adapter(adaptee)
|
|
|
|
|
|
|
|
|
|
# 客户端调用Target的request方法,实际上调用的是Adaptee的specific_request方法
|
|
|
|
|
adapter.request()
|