适配器模式充当两个不兼容接口之间的桥梁.这种类型的设计模式属于结构模式,因为此模式结合了两个独立接口的功能.
此模式涉及单个类,它负责连接独立或不兼容接口的功能.一个真实的例子可能是读卡器的情况,它充当存储卡和笔记本电脑之间的适配器.您将存储卡插入读卡器,将读卡器插入笔记本电脑,以便通过笔记本电脑读取存储卡.
适配器设计模式有助于一起完成课程.它根据需求将类的接口转换为另一个接口.该模式包括一个多态性,它命名一个名称和多个表单.比如可以按照收集的要求使用的形状类.
有两种类型的适配器模式;
对象适配器模式
此设计模式依赖于对象实现.因此,它被称为对象适配器模式.
类适配器模式
这是实现适配器设计模式的另一种方法.该模式可以使用多个继承来实现.
如何实现适配器模式?
现在让我们看看如何实现适配器模式./p>
class EuropeanSocketInterface: def voltage(self): pass def live(self): pass def neutral(self): pass def earth(self): pass# Adapteeclass Socket(EuropeanSocketInterface): def voltage(self): return 230def live(self): return 1 def neutral(self): return -1 def earth(self): return 0# Target interfaceclass USASocketInterface: def voltage(self): pass def live(self): pass def neutral(self): pass# The Adapterclass Adapter(USASocketInterface): __socket = None def __init__(self, socket): self.__socket = socket def voltage(self): return 110 def live(self): return self.__socket.live() def neutral(self): return self.__socket.neutral()# Clientclass ElectricKettle: __power = None def __init__(self, power): self.__power = power def boil(self): if self.__power.voltage() > 110: print "Kettle on fire!" else: if self.__power.live() == 1 and \ self.__power.neutral() == -1: print "Coffee time!" else: print "No power."def main(): # Plug in socket = Socket() adapter = Adapter(socket) kettle = ElectricKettle(adapter) # Make coffee kettle.boil() return 0if __name__ == "__main__": main()
输出
上述程序生成以下输出 :
解释
代码包含各种适配器接口参数和属性.它包括Adaptee以及实现所有属性的Target接口,并将输出显示为可见.