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 相关文章推荐
驱动事件的addEvent.js代码
Mar 27 Javascript
js取消单选按钮选中并判断对象是否为空
Nov 14 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
Sep 04 Javascript
javascript关于继承的用法汇总
Dec 20 Javascript
使用JQuery FancyBox插件实现图片展示特效
Nov 16 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
Dec 31 Javascript
解析jQueryEasyUI的使用
Nov 22 Javascript
jQuery获取Table某列的值(推荐)
Mar 03 Javascript
AngularJS学习笔记之表单验证功能实例详解
Jul 06 Javascript
如何在vue中使用ts的示例代码
Feb 28 Javascript
javascript移动端 电子书 翻页效果实现代码
Sep 07 Javascript
微信小程序吸底区域适配iPhoneX的实现
Apr 09 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
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
Javascript hasOwnProperty 方法 & in 关键字
2008/11/26 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
读懂CommonJS的模块加载
2019/04/19 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
django中cookiecutter的使用教程
2020/12/03 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
MADE法国:提供原创设计师家具
2018/09/18 全球购物
校本教研工作方案
2014/01/14 职场文书
大型会议接待方案
2014/03/01 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
万能检讨书2000字
2014/10/17 职场文书
档案管理员岗位职责
2015/02/12 职场文书
初中毕业感言300字
2015/07/31 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python