design pattern

1 adapter


class Cat:
    def __init__(self):
        self.name = "cat"

    def mom(self):
        print("mom!")


class Dog:
    def __init__(self):
        self.name = "dog"

    def bark(self):
        print("bark!")


class Adapter:
    def __init__(self, o, **adapted_methods):
        """set adapted methods in self's dict"""
        self.obj = o
        self.__dict__.update(adapted_methods)

    def __getattr__(self, item):
        """pass non-adapted methods to self.object"""
        return getattr(self.obj, item)


def adapter_test():
    objects = []
    dog = Dog()
    objects.append(Adapter(dog, make_noise=dog.bark))
    cat = Cat()
    objects.append(Adapter(cat, make_noise=cat.mom))

    for obj in objects:
        print(obj.name)
        obj.make_noise()


if __name__ == '__main__':
    adapter_test()

TODO: other patterns

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章