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 相关文章推荐
一行代码实现纯数据json对象的深度克隆实现思路
Jan 09 Javascript
button没写type=button会导致点击时提交
Mar 06 Javascript
javascript学习笔记之10个原生技巧
May 21 Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 Javascript
js实现继承的5种方式
Dec 01 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
BootstrapValidator不触发校验的实现代码
Sep 28 Javascript
JavaScript箭头(arrow)函数详解
Jun 04 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
Sep 20 Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 Javascript
jQuery实现日历效果
Sep 11 jQuery
Vant+postcss-pxtorem 实现浏览器适配功能
Feb 05 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语法(1)
2006/10/09 PHP
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
ThinkPHP控制器详解
2015/07/27 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
js 深拷贝函数
2008/12/04 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
Vue实现6位数密码效果
2018/08/18 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
python类继承用法实例分析
2014/10/10 Python
粗略分析Python中的内存泄漏
2015/04/23 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python对象转换为json的方法步骤
2019/04/25 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
pandas 数据类型转换的实现
2020/12/29 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
作为网站管理者应当如何防范XSS
2014/08/16 面试题
大学生职业生涯规划书汇总
2014/03/20 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
优质护理心得体会
2016/01/22 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
同学会演讲稿
2019/04/02 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
tree shaking对打包体积优化及作用
2022/07/07 Java/Android