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