提示:本文译自《Python 3 Object-oriented Programming, Second Edition》,Chapter 10: Python Design Patterns I。
装饰器模式允许我们把提供核心功能的对象,“包裹”在改变这个功能的其它对象中。任何对象与这个经过装饰的对象交互时,可采用完全相同的方式,就像该对象并未经过装饰时一样(即,经过装饰的对象,具有与核心对象完全相同的接口)。
装饰器模式有两种主要用途:
- 改进某个组件向另一个组件发送数据时的响应
- 支持多种可选行为
第二种用途通常是多重继承的合理替代方案。我们可以构建一个核心对象,然后围绕它创建装饰器。由于装饰器对象具有与核心对象相同的接口,我们甚至还可以把它再包裹到另一个装饰器中。下面是装饰器的UML图: