• Component:增加功能时的核心角色,装饰物和被装饰物都要实现此接口,这样就保持了一致性

  • ConcreteComponent:该角色是实现了Component角色所定义的接口的具体被装饰的类

  • Decorator:装饰物抽象类,该角色内部保存了被装饰的对象Component角色

  • ConcreteDecorator:该角色是具体的装饰物角色,用于装饰具体的ConcreteComponent