一句话总结
通过继承自同一父类,来实现给某一个类动态的添加新的职责,原理是每一个装饰者持有被装饰者的实例,并可以用自身替代他....首先,将咖啡,茶等饮料定义为被装饰者,奶,糖,椰果,珍珠等定义为装饰者,当用户下单时,用户购买了一个”被装饰者”以及若干个“装饰者”,我们只需要将奶,糖,椰果,珍珠等东西装饰在被用户购买的这个被装饰者上即可...”类
其实在这里有一问题,装饰者和被装饰者同样继承自Component,为什么被装饰者直接继承,而装饰者却还需要再写一个子类呢?...而使用装饰者模式,可以很轻松的处理各种附加要求.
特点
通过上面的例子,我们可以总结一下装饰者模式的特点。 (1)装饰者和被装饰者有相同的接口(或有相同的父类)。...(2)装饰者保存了一个被装饰者的引用。 (3)装饰者接受所有客户端的请求,并且这些请求最终都会返回给被装饰者(参见韦恩图)。 (4)在运行时动态地为对象添加属性,不必改变对象的结构。