Python 适配器模式

适配器模式充当两个不兼容接口之间的桥梁。这种设计模式属于结构模式,因为该模式结合了两个独立接口的功能。

此模式涉及单个类,该类负责加入独立或不兼容接口的功能。现实生活中的例子可能是读卡器,它充当存储卡和笔记本电脑之间的适配器。您将存储卡插入读卡器,并将读卡器插入笔记本电脑,以便可以通过笔记本电脑读取存储卡。

适配器设计模式有助于将类一起工作。它将根据需要将类的接口转换为另一个接口。该模式包括一个物种多态性,该多态性命名一个名称和多种形式。说一个可以根据收集的要求使用的形状类。

有两种类型的适配器模式:

对象适配器模式

此设计模式依赖于对象实现。因此,它称为对象适配器模式。

 

类适配器模式

这是实现适配器设计模式的另一种方法。该模式可以使用多个继承来实现。

 

如何实现适配器模式?

现在让我们看看如何实现适配器模式。

# Filename : example.py
# Date : 2020-08-22
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()

 

输出

上面的程序生成以下输出:

Coffee time!

 

说明

该代码包括具有各种参数和属性的适配器接口。它包括Adaptee和Target接口,该接口实现所有属性并将输出显示为可见。

装饰器模式允许用户向现有对象添加新功能,而无需更改其结构。这种设计模式属于结构模式,因为该模式充当现有类的包装。此模式创建一个装饰器类,该装饰器类包装原始类并提供其他功能,以保持类方法签名完整。修饰器模式的动机是动 ...