适配器模式
在软件设计中,为了解决接口不一致的问题,两个软件模块之间往往需要通过一个适配器类 Adapter 进行“适配”。这样的模式叫做适配器设计模式。该模式可以分为两种,分别为类适配器模式(Class Adapter Pattern)和对象适配器模式
类适配器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| from abc import ABCMeta,abstractmethod
class FlyAnimal(metaclass=ABCMeta): @abstractmethod def fly(self): pass
def run(self): pass
class Bird(FlyAnimal): def fly(self): print("鸟在飞") def run(self): print("鸟在跑")
class Dog: def run(self): print("狗在跑")
class AnimalAdapter(Dog,FlyAnimal): def __init__(self): self.dog = Dog() def fly(self): print("我也能飞了")
AnimalAdapter().fly() AnimalAdapter().run() AnimalAdapter().dog.run()
|
对象适配器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class FlyAnimal(ABC): @abstractmethod def fly(self): pass
def run(self): pass
class Bird(FlyAnimal): def fly(self): print("鸟在飞") def run(self): print("鸟在跑")
class Dog: def run(self): print("狗在跑")
class AnimalAdapter(FlyAnimal): def __init__(self): self.dog = Dog() def fly(self): print("我也能飞了") def run(self): self.dog.run()
AnimalAdapter().fly() AnimalAdapter().run() AnimalAdapter().dog.run()
|