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 相关文章推荐
node.js读取文件到字符串的方法
Jun 29 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
javascript制作照片墙及制作过程中出现的问题
Apr 04 Javascript
JavaScript原生对象常用方法总结(推荐)
May 13 Javascript
js实现右键菜单功能
Nov 28 Javascript
Webpack打包慢问题的完美解决方法
Mar 16 Javascript
Vue2递归组件实现树形菜单
Apr 10 Javascript
node 利用进程通信实现Cluster共享内存
Oct 27 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
three.js实现圆柱体
Dec 30 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
Aug 27 Javascript
vue 在单页面应用里使用二级套嵌路由
Dec 19 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
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
php正则修正符用法实例详解
2016/12/29 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
python 全文检索引擎详解
2017/04/25 Python
使用python实现画AR模型时序图
2019/11/20 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
元旦红领巾广播稿
2014/02/19 职场文书
写给医院的感谢信
2015/01/22 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
民间借贷借条范本
2015/05/25 职场文书
社会实践单位意见
2015/06/05 职场文书
教务处教学工作总结
2015/08/10 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
Python数组变形的几种实现方法
2022/05/30 Python