一、定义
- 在不改变原有对象的基础上,将功能附加到对象上
- 提供了比继承更有弹性的替代方案(扩展原有对象)
类似于游戏中的Buff,当一个英雄获得了红/蓝Buff时,原英雄能力不变,又额外增加了Buff相应属性
二、适用场景
三、优缺点
1、优点
- 是继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能
- 通过不同的装饰者类以及这些装饰者类的排列组合,可以实现不同的效果
- 符合开闭原则 OpenClose
2、缺点
四、代码实现
简单装饰者
抽象装饰者
类似于游戏中的Buff,当一个英雄获得了红/蓝Buff时,原英雄能力不变,又额外增加了Buff相应属性
简单装饰者
抽象装饰者