Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 61.9MB ·虚拟内存 1299.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
适配器模式充当两个不兼容接口之间的桥梁。这种设计模式属于结构模式,因为该模式结合了两个独立接口的功能。
此模式涉及单个类,该类负责加入独立或不兼容接口的功能。现实生活中的例子可能是读卡器,它充当存储卡和笔记本电脑之间的适配器。您将存储卡插入读卡器,并将读卡器插入笔记本电脑,以便可以通过笔记本电脑读取存储卡。
适配器设计模式有助于将类一起工作。它将根据需要将类的接口转换为另一个接口。该模式包括一个物种多态性,该多态性命名一个名称和多种形式。说一个可以根据收集的要求使用的形状类。
有两种类型的适配器模式:
此设计模式依赖于对象实现。因此,它称为对象适配器模式。
这是实现适配器设计模式的另一种方法。该模式可以使用多个继承来实现。
现在让我们看看如何实现适配器模式。
# 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接口,该接口实现所有属性并将输出显示为可见。
装饰器模式允许用户向现有对象添加新功能,而无需更改其结构。这种设计模式属于结构模式,因为该模式充当现有类的包装。此模式创建一个装饰器类,该装饰器类包装原始类并提供其他功能,以保持类方法签名完整。修饰器模式的动机是动 ...