装饰模式
概念
在不改变原代码的基础上,对一组对象的功能进行增强
角色
- 1个产品接口
- 1个实现产品接口的类
- 1个装饰产品的抽象类
- 1个装饰产品的实现类
使用场景
- 装饰器、Mixin、HOC:定义一个装饰类,并定义以被装饰类对象作参数的构造函数,和被装饰类中所要装饰的方法;创建装饰类对象,调用装饰方法,执行被装饰类对象的特有功能
注:
- 装饰类和被装饰类必须实现同一个接口或继承同一个父类
- 装饰和继承都能实现功能的扩张增强,二者有何不同?以为了提效加入缓冲技术为例。若通过继承方式产生流对象,其也要产生子类,则会导致继承体系臃肿,不灵活,这是让缓冲和具体的对象相结合;若通过装饰设计模式将缓冲进行单独的封装,哪个对象需要缓冲就将哪个对象和缓冲关联,更加灵活