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 选择器、DOM操作、事件、动画
Nov 25 Javascript
新浪微博字数统计 textarea字数统计实现代码
Aug 28 Javascript
jquery中交替点击事件toggle方法的使用示例
Dec 08 Javascript
jquery绑定事件不生效的解决方法
Feb 11 Javascript
Javascript的&&和||的另类用法
Jul 23 Javascript
Javascript保存网页为图片借助于html2canvas库实现
Sep 05 Javascript
js获取所有checkbox的值的简单实例
May 30 Javascript
Vue.js学习之过滤器详解
Jan 22 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
Mar 31 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
Apr 10 jQuery
在layer弹层layer.prompt中,修改placeholder的实现方法
Sep 27 Javascript
javascript 模块依赖管理的本质深入详解
Apr 30 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
第十三节--对象串行化
2006/11/16 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
php使用array_chunk函数将一个数组分割成多个数组
2018/12/05 PHP
Js中sort()方法的用法
2006/11/04 Javascript
Js 中debug方式
2010/02/07 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
用Python中的字典来处理索引统计的方法
2015/05/05 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
opencv实现图像几何变换
2021/03/24 Python
建筑工程自我鉴定
2013/10/18 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
创先争优活动方案
2014/02/12 职场文书
网站创业计划书
2014/04/30 职场文书
个人事迹材料范文
2014/12/29 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
利用python进行数据加载
2021/06/20 Python