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 相关文章推荐
九种js弹出对话框的方法总结
Mar 12 Javascript
解析javascript 实用函数的使用详解
May 10 Javascript
JavaScript知识点总结(十)之this关键字
May 31 Javascript
js获取html的span标签的值方法(超简单)
Jul 26 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
Jan 19 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
解决AngualrJS页面刷新导致异常显示问题
Apr 20 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
Jun 29 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
Jun 07 Javascript
vue树形结构获取键值的方法示例
Jun 21 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
Jul 10 Javascript
基于AngularJs select绑定数字类型的问题
Oct 08 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
十大“创意”战术!
2020/03/04 星际争霸
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php获取linux命令结果的实例
2017/03/13 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
简单使用Python自动生成文章
2014/12/25 Python
python简单实现计算过期时间的方法
2015/06/09 Python
使用Python对MySQL数据操作
2017/04/06 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python实现猜数字小游戏
2020/03/24 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
药品质量检测应届生求职信
2013/11/14 职场文书
《秋姑娘的信》教学反思
2014/02/28 职场文书
党员创先争优活动总结
2014/05/04 职场文书
五五普法心得体会
2014/09/04 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
护士岗位竞聘书
2015/09/15 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python