javascript模式——Decorator

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);
时间: 2024-11-09 00:02:30

javascript模式——Decorator的相关文章

Javascript模式(一) 单例模式

function A(){ // 存储实例对象 var instance; // 重写构造函数,只返回闭包内的局部变量instance A = function(){ return instance; } // 重写原型为实例本身 之后定义在原型上的属性和方法会直接赋在该实例上 A.prototype = this; // 实例化 instance = new A(); // 重写构造函数 instance.constructor = A; // 第一次实例化时返回重写之后的构造函数的实例 re

设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 使用方法

装饰者模式(Decorator Pattern) Java的IO类 使用方法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26716823 装饰者模式(decorator pattern)参见: http://blog.csdn.net/caroline_wendy/article/details/26707033 Java的IO类使用装饰者模式进行扩展, 其中FilterInputStream类, 就是装饰者(decora

JavaScript模式 --- 札记

全局变量的问题 创建隐式全局变量的反模式是带有var声明的链式赋值.在下面的代码片段中, a 是局部变量, b 是全局变量,这也许并不是你想要的 function foo(){ var a = b = 0; //var a window.b; // ....}//造成上面的原因是源于从右至左的操作符优先级.首先,优先级较高的是表达式 b=0, 此时b未声明.表达式的返回值为0,它被赋给 var 声明的局部变量 a. /* 建议这样做 */ function foo(){ var a, b; //

设计模式 - 装饰者模式(Decorator Pattern) 详解

装饰者模式(Decorator Pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26707033 装饰者模式(Decorator Pattern):动态地将责任附加到对象上. 若要扩展功能, 装饰者提供了比继承更有弹性的替代方案. 使用方法: 1. 首先创建组件(Component)父类, 所有类,具体组件(Concrete Component)和装饰者(Decorator)都属于这一类型, 可以进行扩展

设计模式(八)装饰器模式Decorator(结构型)

设计模式(八)装饰器模式Decorator(结构型) 1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性.如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上. 通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法.但是这种方法是静态的,用户不能控制增加行为的方式和时机.如果  你希望改变一个已经初始化的对象的行为,你怎么办?或者,你希望继承许

JavaScript模式

<JavaScript模式>一书看完一半了,越发感慨要精通JavaScript并非一夕一朝之事.先不说设计模式,就说JS的模块模式你真正掌握了么?这是成为一名架构师必备的基础.只是看书是很难掌握这些模式的灵活运用,需要实战,大量的实战.去什么地方实战呢,业务代码是很少有机会进行这个层面的实战的.思考了一些时日,这种实战最好的方法是研究相关的源码,underscore.js,sea.js,jQuery.js,vue.js,后两者都是近万行的代码量,先暂时不去研究,前两者是千行的代码量,可以放在今

设计模式 - 装饰者模式(Decorator Pattern) 具体解释

装饰者模式(Decorator Pattern) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26707033 装饰者模式(Decorator Pattern):动态地将责任附加到对象上. 若要扩展功能, 装饰者提供了比继承更有弹性的替代方案. 用法: 1. 首先创建组件(Component)父类, 全部类,详细组件(Concrete Component)和装饰者(Decorator)都属于这一类型, 能够进行扩展

设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 用法

装饰者模式(Decorator Pattern) Java的IO类 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26716823 装饰者模式(decorator pattern)參见: http://blog.csdn.net/caroline_wendy/article/details/26707033 Java的IO类使用装饰者模式进行扩展, 当中FilterInputStream类, 就是装饰者(decorato

说说设计模式~装饰器模式(Decorator)

装饰器模式,也叫又叫装饰者模式,顾名思义,将一个对象进行包裹,包装,让它变成一个比较满意的对象,这种模式在我们平时项目开发中,经常会用到,事实上,它是处理问题的一种技巧,也很好的扩展了程序,让程序代码不那么死板! 何时能用到它? 1. 需要扩展一个类的功能,或给一个类添加附加职责. 2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销. 3. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实. 4. 当不能采用生成子类的方法进行扩充时. 其中我们认为第四种