Python设计模式--适配器模式

来源:互联网 发布:知乎日报 rss 编辑:程序博客网 时间:2024/05/22 10:37

说明

所谓适配器模式是指是一种接口适配技术,它可通过某个类来使用另一个接口与之不兼容的类,将一个类的借口转换成客户希望的另一个接口,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设计模式

原创粉丝点击