node.js实现的装饰者模式示例


Posted in Javascript onSeptember 06, 2017

本文实例讲述了node.js实现的装饰者模式。分享给大家供大家参考,具体如下:

装饰者模式的实现更强调类的组合而不是通过继承。这样可以增强灵活性。在node.js 中,可以通过call函数实现。call函数可以在一个对象中调用另一个类的成员函数,从这种意义上达成类的组合目的。

var util = require('util');
var Beverage = function(){
  var description = "Unkown Beverage"
  this.getDescription = function(){
    return description;
  }
}
function Espresso(){
  Beverage.call(this);
  this.description = "Espresso";
}
util.inherits(Espresso, Beverage);
Espresso.prototype.cost = function(){
  return 1.99;
}
function HouseBlend(){
  Beverage.call(this);
  this.description = "House Blend Coffee";
}
util.inherits(HouseBlend, Beverage);
HouseBlend.prototype.cost = function(){
  return .89;
}
function Mocha(beverage){
  this.beverage = beverage;
};
Mocha.prototype.getDescription = function(){
  return this.beverage.getDescription() + ", Mocha";
}
Mocha.prototype.cost = function(){
  return 0.20 + this.beverage.cost();
}
function Whip(beverage){
  this.beverage = beverage;
};
Whip.prototype.getDescription = function(){
  return this.beverage.getDescription() + ", Whip";
}
Whip.prototype.cost = function(){
  return 0.40 + this.beverage.cost();
}
var beverage = new Espresso();
console.log(beverage.getDescription() + " $" + beverage.cost());
var beverage2 = new HouseBlend();
beverage2 = new Mocha(beverage2);
beverage2 = new Mocha(beverage2);
beverage2 = new Whip(beverage2);
console.log(beverage2.getDescription() + " $" + beverage2.cost());

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
List Installed Hot Fixes
Jun 12 Javascript
javascritp实现input输入框相关限制用法
Jun 29 Javascript
JavaScript实现快速排序(自已编写)
Dec 19 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
May 05 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
Jun 16 Javascript
JS实现环形进度条(从0到100%)效果
Jul 05 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
May 28 Javascript
vue实现留言板todolist功能
Aug 16 Javascript
node.js基于express使用websocket的方法
Nov 09 Javascript
vue: WebStorm设置快速编译运行的方法
Oct 18 Javascript
JavaScript前端开发时数值运算的小技巧
Jul 28 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
Oct 24 Javascript
JavaScript使用FileReader实现图片上传预览效果
Mar 27 #Javascript
js防刷新的倒计时代码 js倒计时代码
Sep 06 #Javascript
JavaScript中运算符规则和隐式类型转换示例详解
Sep 06 #Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 #Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
Sep 06 #Javascript
vue mixins组件复用的几种方式(小结)
Sep 06 #Javascript
JavaScript 中Date对象的格式化代码方法汇总
Sep 06 #Javascript
You might like
抓取YAHOO股票报价的类
2009/05/15 PHP
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
详解Django框架中用context来解析模板的方法
2015/07/20 Python
python使用pymysql实现操作mysql
2016/09/13 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
python生成lmdb格式的文件实例
2018/11/08 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
数控技术专业推荐信
2013/11/01 职场文书
毕业生就业推荐信范文
2013/12/01 职场文书
班级聚会策划书
2014/01/16 职场文书
法人代表证明书
2014/09/18 职场文书
给医院的感谢信
2015/01/21 职场文书
史上最牛的辞职信
2015/02/28 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
python实现手机推送 代码也就10行左右
2022/04/12 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers