javascript设计模式之装饰者模式

/*
 * 装饰者模式提供比继承更有弹性的替代方案
 * 在不改变原构造函数的情况下,添加新的属性或功能
*/

//需要装饰的类(函数)
function Macbook() {
    this.cost = function () {
        return 1000;
    };
}

// 加个内存
function Memory(macbook) {
    this.cost = function () {
        return macbook.cost() + 100;
    };
}

// 再买个保险
function Insurance(macbook) {
    this.cost = function () {
        return macbook.cost() + 250;
    };
}


var myMac = new Insurance(new Memory(new Macbook()));

console.log(myMac.cost());  // 1350

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。