说明
所谓适配器模式是指是一种接口适配技术,它可通过某个类来使用另一个接口与之不兼容的类,将一个类的借口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
简单实现
class Obj(object):
def method(self):
print 'obj'
class Obj2(object):
def new_method(self):
print 'obj2'
class Adpater(object):
def __init__(self, adpatee):
self.adpatee = adpatee
def request(self):
self.adpatee.new_method()
if __name__ == '__main__':
objects = []
a = Obj()
b = Obj2()
objects.append(a)
objects.append(Adpater(b))
for obj in objects:
obj.method()
更灵活实现
通过使用类的dict实现适配器模式
class Dog:
def __init__(self, name):
self.name = name
def dog(self):
print(self.name)
class Cat:
def __init__(self, name):
self.name = name
def cat(self):
print(self.name)
class Fish:
def __init__(self, name):
self.name = name
def fish(self):
print(self.name)
class Adapter:
def __init__(self, obj, method):
self.obj = obj
self.__dict__.update(method)
if __name__ == "__main__":
objects = []
dog = Dog("dog")
cat = Cat("cat")
fish = Fish("dish")
objects.append(Adapter(dog, dict(method=dog.dog)))
objects.append(Adapter(dog, dict(method=cat.cat)))
objects.append(Adapter(fish, dict(method=fish.fish)))
for obj in objects:0
obj.method()
应用场景
- 重构代码统一调用
- 增加需求不想改变原有代码
- 对接其他project新增class
参考资料:
精通Python设计模式