'''
适配器模式(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()