定义
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。不改变接口的前提下,增强所考虑的类的性能。
何时使用:
1)需要扩展一个类的功能,或给一个类增加附加责任。
2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。
3)需要增加一些基本功能的排列组合而产生的非常大量的功能,从而使继承变得 不现实。
角色
抽象构件(Component)
给出一个抽象接口,以规范准备接收附加责任的对象。
具体构件(ConcreteComponent)
定义一个将要接收附加责任的类
装饰角色(Decorator)
持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口
具体装饰角色(ConcreteDecorator)
负责给构件对象“贴上”附加的责任