Decorator 模式是一种结构型模式,他意在促进代码的复用,是塑造子类的一个方式。
这种想法是基于,新增的属性,对于对象来说不是必须的基本功能。我们为特殊的对象添加自己的方法,而不是重新创建一个类。
用代码表示起来比较清晰,我们的汽车是一个基类,我们要创建轿车,卡车等各有特性的交通工具时,不是通过创建汽车子类或是卡车子类,而是向汽车实例或卡车实例的具体实例中添加新的属性方法。
function vehicle( vehicleType ){ // 类共有的属性 this.vehicleType = vehicleType || \'car\', this.model = \'default\', this.license = \'00000-000\' } // 测试创建一个对象 var testInstance = new vehicle(\'car\'); console.log(testInstance); // turck对象 var truck = new vehicle(\'truck\'); // 这里针对truck需要添加truck特有的方法,这就是装饰 truck.setModel = function( modelName ){ this.model = modelName; } truck.setColor = function( color ){ this.color = color; } // 测试特殊对象的特有方法是否可用 truck.setModel(\'CAT\'); truck.setColor(\'blue\'); console.log(truck); // 基本类vehicle并没有改变 var secondInstance = new vehicle(\'car\'); console.log(secondInstance);