定义
- 在不改变原有对象的基础之上,将功能附加到对象上
- 提供了比继承更有弹性的替代方案(拓展原有对象功能)
类型:结构型
适用场景:
- 拓展一个类的功能或给一个类添加附加职责
- 动态给一个对象添加功能,这些功能可以动态撤销
优缺点
优点:
- 继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象拓展功能
- 通过使用装饰类以及这些装饰类的排列组合,可以实现不同效果
- 符合开闭原则
缺点:
- 会出现更多的代码,更多的类,增加程序的复杂性
- 动态装饰时,多层装饰时会更复杂
装饰者和适配器模式区别
- 装饰者:装饰类与被装饰实体类具有统一的接口(装饰类是被装饰类的子类)
- 适配器:适配器类与被适配者类接口不一样
UML类图

网友评论