Decorator 模式是一种结构型模式,他意在促进代码的复用,是塑造子类的一个方式。

这种想法是基于,新增的属性,对于对象来说不是必须的基本功能。我们为特殊的对象添加自己的方法,而不是重新创建一个类。

用代码表示起来比较清晰,我们的汽车是一个基类,我们要创建轿车,卡车等各有特性的交通工具时,不是通过创建汽车子类或是卡车子类,而是向汽车实例或卡车实例的具体实例中添加新的属性方法。

function vehicle( vehicleType ){
// 类共有的属性
this.vehicleType = vehicleType || 'car',
this.model = 'default',
this.license = '00000-000'
} // 测试创建一个对象
var testInstance = new vehicle('car');
console.log(testInstance); // turck对象
var truck = new vehicle('truck'); // 这里针对truck需要添加truck特有的方法,这就是装饰
truck.setModel = function( modelName ){
this.model = modelName;
}
truck.setColor = function( color ){
this.color = color;
} // 测试特殊对象的特有方法是否可用
truck.setModel('CAT');
truck.setColor('blue');
console.log(truck); // 基本类vehicle并没有改变
var secondInstance = new vehicle('car');
console.log(secondInstance);

最新文章

  1. Android Fragment
  2. Hadoop 数据库 - HBase
  3. Split的应用
  4. Leetcode 225 Implement Stack using Queues
  5. Sublime Text 3使用技巧总结--快捷键及常用插件
  6. 服务器证书安装配置指南(IIS7.5) 分类: ASP.NET 2014-11-05 12:39 105人阅读 评论(0) 收藏
  7. Computer Vision Algorithm Implementations
  8. step_by_step_G+入门-在线服务
  9. 深入理解javascript执行上下文(Execution Context)
  10. Markdown中特殊字符的转义字符
  11. 全志A33开发板Linux内核定时器编程
  12. 解放你生产力的10款效率工具,赶紧mark起来
  13. C#字符串长度判断
  14. Installing Apache Hadoop Single Node
  15. 字符串(string.cpp)
  16. Linux命令详解-mkdir
  17. 封装实现JavaScript 文件的动态载入功能
  18. Node.js 项目的配置文件
  19. oracle sql命令
  20. jpa Specification复杂查询

热门文章

  1. Android学习笔记--远程服务的使用
  2. JS获取地址参数
  3. JavaScript ----------- 组合继承
  4. django Model模型二及Model模型对数据库的操作
  5. Python学习笔记5(字符串与正则表达式)
  6. 内存操作相关内核 API 的使用
  7. codeforces432D Prefixes and Suffixes(kmp+dp)
  8. 亲试,Windows平台上使用Qt5.2.1编写Android
  9. HTTP协议入门知识
  10. 通过js引入当前所需要的js,css等