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技术实现Tab页界面之二
Sep 21 Javascript
jquery slibings选取同级其他元素的实现代码
Nov 15 Javascript
jquery实现兼容IE8的异步上传文件
Jun 15 Javascript
详解JavaScript中的构造器Constructor模式
Jan 14 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
Dec 30 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
js实现城市级联菜单的2种方法
Jun 23 Javascript
layui 监听表格复选框选中值的方法
Aug 15 Javascript
Vue 无限滚动加载指令实现方法
May 28 Javascript
原生js实现的金山打字小游戏(实例代码详解)
Mar 16 Javascript
详解阿里Node.js技术文档之process模块学习指南
Jan 04 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文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
如何使用php实现评委评分器
2015/07/31 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
跟老齐学Python之用while来循环
2014/10/02 Python
用实例分析Python中method的参数传递过程
2015/04/02 Python
Python线程创建和终止实例代码
2018/01/20 Python
Python subprocess模块详细解读
2018/01/29 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python变量赋值的秘密分享
2018/04/03 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
Python更新所有已安装包的操作
2020/02/13 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
python如何将图片转换素描画
2020/09/08 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
文员的职业生涯规划发展方向
2014/02/08 职场文书
酒店开业策划方案
2014/06/02 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android
vue递归实现树形组件
2022/07/15 Vue.js