1) 定义:动态给一个对象添加一些额外的职责。使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。
2) 作用:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。比如,现在需要一个汉堡,主体是鸡腿堡,可以选择添加生菜、酱、辣椒等等许多其他的配料,这种情况下就可以使用装饰者模式。汉堡基类(被装饰者)、鸡腿堡类(被装饰者的初始状态,有些自己的简单装饰)、配料的基类(装饰者,用来对汉堡进行多层装饰,每层装饰增加一些配料)、生菜(装饰者的第一层)、辣椒(装饰者的第二层)。