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程序设计有所帮助。