装饰模式又可称为包装器(装饰模式比生成子类实现更为灵活)
装饰模式:允许在一个现有类的基础上添加新的功能,同时又不改变其框架结构。
装饰类就是一种包装,打扮原有的类,并在保持原有类结构的基础上,添加一些新的功能。
动态地给一个对象添加一些额外的职责。
在不想增加很多子类的情况下扩展类的功能。
装饰模式的结构:1、抽象组件:定义了需要进行装饰的方法
2、具体组件:是抽象组件的一个子类
3、装饰:装饰具体组件
4、具体装饰:是装饰组件的非抽象子类
优点:装饰类和被装饰类可以独立发展,不会相互耦合。
装饰模式时继承的一个替代模式
可以使用多个装饰来装饰具体组件的实例。
缺点:装饰模式比继承灵活,同样比继承更容易出错。
适用场景:程序希望动态地增强类的某个对象的功能,而又不影响到该类的其他对象
采用继承来增强对象功能不利于系统的扩展和维护
需要给一个对象动态的增加功能,也可撤销功能