定义
动态的给一个对象添加一些额外的职责,对于扩展功能而言,装饰者提供了比继承更有弹性的设计。
模式结构
模式分析
- Component定义了一个可以为其动态添加功能的对象接口,ConcreteComponent为其具体的实现;
- Decorator是与Component定义一致的接口,其维持了一个指向Component的引用,ConcreteDecorator是具体的实现。
代码实现
python的实现不同于其他语言,python提供了@
语法供我们快速实现装饰器并使用
def decorator(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
@decorator
def test():
print('test')
适用性
- 在不修改对象的前提下,给对象添加额外的职责;
- 处理可以撤销的职责;
- 不能使用继承的情况下。