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

 

你可能感兴趣的:(JavaScript)