js设计模式(7)---装饰者模式
0.前言
下午做事效率很低,无精打采的,整个脑子就跟浆糊一样,看看时间一点点流去,心中只能无可奈何,哎,码农的激情难道就这么容易熄灭吗?
1.该模式的使用情况
假如我们想给对象增加功能,但是又不想修改原有对象,也不想或不便通过继承来实现,那么装饰者模式来帮你解决难题。
2.与组合模式的异同
相同:都要与所包装的对象实现统一的接口,并且会把任何方法调用传递给这些对象。
不同:组合模式是把众多子对象组织成为一个整体,形成层次的树形结构;而装饰者模式用于在不修改现有对象或从派生子类的前提下为其添加方法。
3.案例说明:
//需要装饰的类(函数) function Macbook() { this.cost = function () { return 1000; }; } function Memory(macbook) { this.cost = function () { return macbook.cost() + 75; }; } function BlurayDrive(macbook) { this.cost = function () { return macbook.cost() + 300; }; } function Insurance(macbook) { this.cost = function () { return macbook.cost() + 250; }; } // 用法 var myMacbook = new Insurance(new BlurayDrive(new Memory(new Macbook()))); console.log(myMacbook.cost());
4.个人理解
1.假如需要给类增加功能,但是不想通过修改代码,也不想通过继承来实现,那么就可以使用装饰者模式;
2.装饰者模式的目的在于对方法的修改。