js装饰设计模式学习心得


Posted in Javascript onFebruary 17, 2018

装饰设计模式

每种设都有其独特的应用场景和解决问题的方式, 装饰设计模式是动态的为对象添加新的功能, 是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀, 这种模式适合新添加的功能不足以用继承为代价解决问题的情况时使用 - 杀鸡焉用宰牛刀 ^_^
装饰设计模式: 动态地为一个对象添加一些额外的职责,若要扩展一个对象的功能,装饰者提供了比继承更有弹性的替代方案。

结构图:

js装饰设计模式学习心得

接口

var Bicycle = new Interface('Bicycle', ['assemble', 'wash', 'repair', 'getPrice']);

对象类

var AcmeComfortCuiser = function(){
  
};
AcmeComfortCuiser.prototype = {
  assemble: function(){
    
  },
  wash: function(){
    
  },
  repair: function(){
    
  },
  getPrice: function(){
    
  }
}

装饰类

var BicycleDecorator = function(bicycle){
  Interface.ensureImplements(bicycle, Bicycle);
  this.bicycle = bicycle;
};
BicycleDecorator.prototype = {
  assemble: function(){
    return this.bicycle.assemble();
  },
  wash: function(){
    return this.bicycle.wash();
  },
  repair: function(){
    return this.bicycle.repair();
  },
  getPrice: function(){
    return this.bicycle.getPrice();
  }
}

拓展类

var HeadlightDecorator = function(bicycle){
    BicycleDecorator.call(this, bicycle);
  };
  extend(HeadlightDecorator, BicycleDecorator);
  HeadlightDecorator.prototype.getPrice = function(){
    return this.bicycle.getPrice() + 15.00;
  }
Javascript 相关文章推荐
javascript 显示当前系统时间代码
Dec 28 Javascript
jquery keypress,keyup,onpropertychange键盘事件
Jun 25 Javascript
prettify 代码高亮着色器google出品
Dec 28 Javascript
javascript 随机展示头像实现代码
Dec 06 Javascript
js获得页面的高度和宽度的方法
Feb 23 Javascript
JS实现5秒钟自动封锁div层的方法
Feb 20 Javascript
js+ajax实现获取文件大小的方法
Dec 08 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
Jan 26 Javascript
js实现异步循环实现代码
Feb 16 Javascript
js验证框架实现代码分享
May 18 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
Nov 14 Javascript
vue 导航内容设置选中状态样式的例子
Nov 01 Javascript
Vue组件库发布到npm详解
Feb 17 #Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
Feb 16 #Javascript
JavaScript中严格判断NaN的方法
Feb 16 #Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 #Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
Feb 13 #jQuery
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 #jQuery
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 #jQuery
You might like
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
理解Javascript_13_执行模型详解
2010/10/20 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
Javascript验证方法大全
2015/09/21 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
python 中文字符串的处理实现代码
2009/10/25 Python
Python 的描述符 descriptor详解
2016/02/27 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
python网络应用开发知识点浅析
2019/05/28 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
python异步Web框架sanic的实现
2020/04/27 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
文秘档案管理岗位职责
2014/03/06 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
团委竞选演讲稿
2014/04/24 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS