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 相关文章推荐
jQuery插件开发全解析
Oct 10 Javascript
javascript:void(0)使用探讨
Aug 27 Javascript
jquery $.trim()方法使用介绍
May 21 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
javascript的几种继承方法介绍
Mar 22 Javascript
[原创]jQuery常用的4种加载方式分析
Jul 25 Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 Javascript
Bootstrap中datetimepicker使用小结
Dec 28 Javascript
canvas绘制多边形
Feb 24 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
Oct 11 Javascript
详解在create-react-app使用less与antd按需加载
Dec 06 Javascript
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
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
APMServ使用说明
2006/10/23 PHP
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
新浪的图片新闻效果
2007/01/13 Javascript
javascript 鼠标滚轮事件
2009/04/09 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python3基础教程之递归函数简单示例
2019/06/07 Python
python递归下载文件夹下所有文件
2019/08/31 Python
Django中ORM的基本使用教程
2020/12/22 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
Ado与Ado.net的相同与不同
2014/12/08 面试题
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
节能环保演讲稿
2014/08/28 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
干部考核工作总结2015
2015/07/24 职场文书
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技