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 相关文章推荐
IE和Firefox下javascript的兼容写法小结
Dec 10 Javascript
Jvascript学习实践案例(开发常用)
Jun 25 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
Aug 26 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 Javascript
JS绘制微信小程序画布时钟
Dec 24 Javascript
jquery.cookie.js的介绍与使用方法
Feb 09 Javascript
webpack4 处理SCSS的方法示例
Sep 03 Javascript
vue props传值失败 输出undefined的解决方法
Sep 11 Javascript
Vue自定义指令写法与个人理解
Feb 09 Javascript
详解Vue底部导航栏组件
May 02 Javascript
jquery插件开发模式实例详解
Jul 20 jQuery
详解阿里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实现更改hosts文件的方法示例
2017/08/08 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
Document 对象的常用方法
2009/07/31 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
JavaScript定义类和对象的方法
2014/11/26 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
python列表的常用操作方法小结
2016/05/21 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python实现抢购IPhone手机
2018/02/07 Python
python得到单词模式的示例
2018/10/15 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
django迁移文件migrations的实现
2020/03/31 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
Python如何定义一个函数
2015/09/01 面试题
化学教师自荐信范文
2013/12/28 职场文书
同事打架检讨书
2014/02/04 职场文书
新年晚会开场白
2015/05/29 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
七年级作文之环保作文
2019/10/17 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
Python实现对齐打印 format函数的用法
2022/04/28 Python
Redis实现分布式锁的五种方法详解
2022/06/14 Redis