📅  最后修改于: 2023-12-03 15:34:32.545000             🧑  作者: Mango
适配器是一种常用的设计模式,它允许我们将一个类的接口转换成另一个类的接口,从而使不兼容的类能够相互合作。Python中也提供了内置的适配器模式,我们可以利用这个特性来解决一些类之间不兼容的问题。
适配器模式涉及到以下几个角色:
下面我们通过一个示例来演示适配器模式的应用。
假设我们有一个计算器类(Calculator),它能够进行加、减、乘、除的操作。但我们还有一个现成的数学库(Math),其中也有对应的加、减、乘、除的函数。由于两者接口不同,我们需要一个适配器来将Math库的函数适配到Calculator类中。
class Math:
def add(self, x, y):
return x + y
def subtract(self, x, y):
return x - y
def multiply(self, x, y):
return x * y
def divide(self, x, y):
return x / y
class Calculator:
def add(self, x, y):
return x + y
def subtract(self, x, y):
return x - y
def multiply(self, x, y):
return x * y
def divide(self, x, y):
return x / y
class MathAdapter(Calculator):
def __init__(self):
self.math = Math()
def add(self, x, y):
return self.math.add(x, y)
def subtract(self, x, y):
return self.math.subtract(x, y)
def multiply(self, x, y):
return self.math.multiply(x, y)
def divide(self, x, y):
return self.math.divide(x, y)
在上面的代码中,我们创建了一个Math类和一个Calculator类,分别实现了加减乘除四个操作。然后我们创建了一个MathAdapter类,继承Calculator类,并在其中包含了Math类的实例。通过这种方式,我们就可以将Math库的函数适配到Calculator类中。
下面是使用示例:
calculator = Calculator()
print(calculator.add(2, 3)) # 5
math_adapter = MathAdapter()
print(math_adapter.add(2, 3)) # 5
可以看到,我们通过适配器成功地将Math库的函数适配到了Calculator类中,实现了一致的加减乘除操作。这是适配器模式的一个经典应用场景。