一、概念

1、定义:装饰者模式动态地将“责任”附加到对象上。对于扩展功能,装饰者提供了比继承更有弹性的替代方案

2、类型:结构型

3、三个要素:主题(被装饰的)、装饰、委托

4、适用情况
星巴兹咖啡的例子,很多具体类来继承一个抽象类导致类爆炸

5、UML
设计模式(4):装饰者模式
设计模式(4):装饰者模式
装饰者和被装饰者必须是一样的类型,它们继承了共同的超类,这是关键,利用继承获得了类型匹配,而不是继承它的行为,行为是来自装饰者自身以及其他的基础组件,或者是装饰者-装饰者之间的组合关系。
PS:图中最顶部component类型是抽象类,当然java中也可以使用接口

相关文章: