Adapter模式

import os

class Dog(object):
    def __init__(self):
        self.name = 'Dog'

    def bark(self):
        return 'Woof'

class Cat(object):
    def __init__(self):
        self.name = 'Cat'

    def meow(self):
        return 'meow'

class Human(object):
    def __init__(self):
        self.name = 'Human'

    def speak(self):
        return 'Hello'

class Car(object):
    def __init__(self):
        self.name = 'Car'

    def make_noise(self, octane_level):
        return 'vroom%s' % ('!' * octane_level)

class Adapter(object):
    def __init__(self, obj, adapted_methods):
        self.obj = obj
        self.__dic__.update(adapted_methods)
    def __getattr__(self, attr):
        return getattr(self.obj, attr)

def main():
    objects = []
    dog = Dog()
    objects.append(Adapter(dog, dict(make_noise=dog.bark)))
    cat = Cat()
    objects.append(Adapter(cat, dict(make_noise=cat.meow)))
    human = Human()
    objects.append(Adapter(human, dict(make_noise=human.speak)))
    car = Car()
    car_noise = lambda : car.make_noise(3)
    objects.append(Adapter(car, dict(make_noise=car_noise)))

    for obj in objects:
        print('A', obj.name, 'goes', obj.make_noise)

def __name__ == "__main__":
    main()

這裏是講上述的全部類經過一個適配器,來提供統一的接口python

相關文章
相關標籤/搜索