适配器模式可用作两个不兼容接口之间的桥梁。 这种类型的设计模式属于结构模式,因为此模式结合了两个独立接口的功能。
这种模式涉及一个类,它负责连接独立或不兼容接口的功能。 一个现实的例子是读卡器,它是存储卡和笔记本电脑之间的适配器。 您将存储卡插入读卡器,将读卡器插入笔记本电脑,以便通过笔记本电脑读取存储卡。
适配器设计模式有助于类能在一起工作。 它根据需求将一个类的接口转换为另一个接口。 该模式包括一个多态性,它命名一个名称和多个形式。 根据收集到的要求,生成一个使用的形状类。
适配器模式有两种类型 -
现在让我们看看如何实现适配器模式。参考以下代码 -
class europeansocketinterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
def earth(self): pass
# adaptee
class socket(europeansocketinterface):
def voltage(self):
return 230
def live(self):
return 1
def neutral(self):
return -1
def earth(self):
return 0
# target interface
class usasocketinterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
# the adapter
class 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()
# client
class 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 0
if __name__ == "__main__":
main()
执行上面示例代码,得到以上结果 -
说明:代码包括具有各种参数和属性的适配器接口。 它包括adaptee
和target
接口,它实现所有属性并将输出显示为可见。