Python中的设计模式——适配器模式

126 阅读3分钟

Python中的设计模式——适配器模式

适配器设计模式在Python中的实现

它是一种结构化的设计模式,其作用相当于其名称的电子化。在这方面,它有一个成功的命名,而且它的目的是可以理解的(它也被称为包装器)。如果你还记得,结构设计模式关注的是不同的类在一起工作。适配器设计模式也确保了不兼容的接口是可以相互操作的。它将一个类的接口转换为另一个类所期望的接口。 [

Python中的设计模式——Flyweight模式

Python中Flyweight设计模式的实现

让我们从经典的例子开始。我们在一家国际公司担任销售人员。我们的工作需要我们经常出差。许多国家都使用不同类型的插座。因此,我们在将电子设备插入我们所去国家的插座时可能会遇到困难。下面是我们可以做的事情。

第一个选择可能是带着所有的类型。这里的结构是系统中的if-else条件语句。我们根据目的地国家选择必要的一种。这里的问题是,这种结构是违反开放-封闭原则(OCP)的。每一个新的国家都需要一个新的条件。

SOLID原则解释

用Python语言举例说明SOLID原则

作为另一个解决方案,我们为每种类型的套接字对象创建子类,并覆盖其方法。在这种情况下,子类的数量就会爆炸。在这样的解决方案中,实际上,适配器是嵌入在对象内部的。对象不得不在自己的功能之外承担一个适配器的任务。这就违背了单一责任原则(SRP)。这仍然比第一个解决方案好,但不是一个理想的解决方案。

根据SRP,我们必须在其他地方定义适配器任务。这是一个单独的责任。我们将有一个单独的类来解决兼容性问题。这个类将使一个不兼容的对象与另一个与之不兼容的接口互操作。

感谢适配器设计模式,不兼容的对象得到了一个新的接口,而适配器则成为不兼容对象的包装器。也可以设计适配器来适应所有的接口。但在这种情况下,适配器对象本身将变得非常复杂。所以,在实践中,如果每个适配器都能解决一个兼容性问题(双向),那就更好了。

实施

在这个模式结构中,我们有4个组件。

  • 目标。由客户要求的特定领域的接口。
  • 客户端。应用业务逻辑,并与目标协作。
  • 适应者。与目标不兼容的接口。需要适配器。
  • 适配器。适应者和目标者之间的兼容对象。
my_plug = UkPlug()my_plug.electricity_220v()

我们通过使用适配器设计模式,应用了SRP和OCP原则。我们的插座和插头对象具有更简单的结构,因为它们只忙于工作。同样地,适配器也在做它的工作。我们让不同的接口一起工作。

谢谢你的阅读。如果你有任何问题或意见,请随时给我写信