zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    【SICP练习】80 练习2.52
    【SICP练习】79 练习2.51
    【SICP练习】78 练习2.50
    【SICP练习】77 练习2.48-2.49
    【SICP练习】76 练习2.47
    【SICP练习】75 练习2.46
    【SICP练习】74 练习2.45
    【SICP练习】73 练习2.44
    【SICP练习】72 练习2.43
    【SICP练习】71 练习2.42
  • 原文地址:https://www.cnblogs.com/winderby/p/4329182.html
Copyright © 2011-2022 走看看