装饰
装饰模式可以动态的给一个对象添加职责,尤其是在不能大量添加子类的情况下。相对于使用子类来扩展功能,装饰模式更加灵活。并且装饰模式可以在不影响其他对象的前提下,动态、透明的给单个对象添加功能,并且可以处理可撤销的功能。
下面给出一个装饰模式的示例。
class foo(object):
def f1(self):
print("fucntion 1")
def f2(self):
print("function 2")
class foo_decorator(object):
def __init__(self, decoratee):
self.__decoratee = decoratee
def f1(self):
print("decorated funciton 1")
self._decoratee.f1()
def __getattr__(self, name):
return getattr(self._decoratee, name)
u = foo()
ud = foo_decorator(u)
ud.f1()
ud.f2()