# 装饰模式
# 概念:
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。是继承的一种替代方案。
# 解决问题:
一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。
# 何时使用:
不想增加很多子类的情况下扩展类。
# 特点:
优点
装饰类与被装饰类可以独立发展,不会相互耦合,是继承的一种替代模式,可以动态扩展一个实现类的功能。
缺点
多层装饰比较复杂。
# 应用场景:
扩展一个类的功能。
动态增加功能、删除功能。
# 编码实现:
/**
* @title : 装饰模式 Decorative 。
*/
// 被装饰类
class Parent {
name = '张三';
height = 170;
};
// 装饰类
class ParentDecorator {
constructor(decorator) {
this.name = decorator.name;
this.height = decorator.height;
}
age = 25;
sex = '男';
};
const parent = new Parent();
const parentDecorator = new ParentDecorator(parent);
console.log(parentDecorator.name);
← 工厂模式