装饰模式(Decorator)
是指在不改变原对象的基础之上,将功能附加到对象上,提供了比继承更灵活性的替代方案(扩展原有对象的功能),装饰者模式属于结构型模式。
应用场景
1、用于扩展一个类的功能或给一个类添加附加职责。
2、动态的给一个对象添加功能,这些功能可以再动态的撤销。
测试代码
优点:
- 装饰者比继承灵活,可以在不改变原有对象的情况下动态地给一个对象扩展功能,即插即用非常方便
- 通过不同的装饰器组合,可是实现不同效果
- 装饰者完全遵守开闭原则。
缺点:
- 会增加程序复杂性,会增加更多的类
- 动态装饰时,操作多层装饰复杂