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 相关文章推荐
一个级联菜单代码学习及removeClass与addClass的应用
Jan 24 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
Apr 02 Javascript
js作用域及作用域链概念理解及使用
Apr 15 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
Feb 20 Javascript
jQuery的基本概念与高级编程
May 14 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
Jul 21 Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 Javascript
vue 点击其他区域关闭自定义div操作
Jul 17 Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 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
PHP 组件化编程技巧
2009/06/06 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
javascript web对话框与弹出窗口
2009/02/22 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
js实现无限瀑布流实例方法
2019/09/16 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
Python通过poll实现异步IO的方法
2015/06/04 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
python利用opencv实现颜色检测
2021/02/23 Python
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
简单说说tomcat的配置
2013/05/28 面试题
八项规定对照检查材料
2014/08/31 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
追讨欠款律师函
2015/06/24 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
javascript的var与let,const之间的区别详解
2022/02/18 Javascript