node.js实现的装饰者模式示例
本文实例讲述了node.js实现的装饰者模式。分享给大家供大家参考,具体如下:
装饰者模式的实现更强调类的组合而不是通过继承。这样可以增强灵活性。在node.js中,可以通过call函数实现。call函数可以在一个对象中调用另一个类的成员函数,从这种意义上达成类的组合目的。
varutil=require('util');
varBeverage=function(){
vardescription="UnkownBeverage"
this.getDescription=function(){
returndescription;
}
}
functionEspresso(){
Beverage.call(this);
this.description="Espresso";
}
util.inherits(Espresso,Beverage);
Espresso.prototype.cost=function(){
return1.99;
}
functionHouseBlend(){
Beverage.call(this);
this.description="HouseBlendCoffee";
}
util.inherits(HouseBlend,Beverage);
HouseBlend.prototype.cost=function(){
return.89;
}
functionMocha(beverage){
this.beverage=beverage;
};
Mocha.prototype.getDescription=function(){
returnthis.beverage.getDescription()+",Mocha";
}
Mocha.prototype.cost=function(){
return0.20+this.beverage.cost();
}
functionWhip(beverage){
this.beverage=beverage;
};
Whip.prototype.getDescription=function(){
returnthis.beverage.getDescription()+",Whip";
}
Whip.prototype.cost=function(){
return0.40+this.beverage.cost();
}
varbeverage=newEspresso();
console.log(beverage.getDescription()+"$"+beverage.cost());
varbeverage2=newHouseBlend();
beverage2=newMocha(beverage2);
beverage2=newMocha(beverage2);
beverage2=newWhip(beverage2);
console.log(beverage2.getDescription()+"$"+beverage2.cost());
希望本文所述对大家node.js程序设计有所帮助。