深入理解JavaScript系列(29):设计模式之装饰者模式详解
介绍
装饰者提供比继承更有弹性的替代方案。装饰者用用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置成原始对象调用(例如装饰者的构造函数)。
装饰者用于通过重载方法的形式添加新功能,该模式可以在被装饰者前面或者后面加上自己的行为以达到特定的目的。
正文
那么装饰者模式有什么好处呢?前面说了,装饰者是一种实现继承的替代方案。当脚本运行时,在子类中增加行为会影响原有类所有的实例,而装饰者却不然。取而代之的是它能给不同对象各自添加新行为。如下代码所示:
//需要装饰的类(函数)
functionMacbook(){
this.cost=function(){
return1000;
};
}
functionMemory(macbook){ this.cost=function(){ returnmacbook.cost()+75; }; }
functionBlurayDrive(macbook){ this.cost=function(){ returnmacbook.cost()+300; }; }
functionInsurance(macbook){ this.cost=function(){ returnmacbook.cost()+250; }; }
//用法 varmyMacbook=newInsurance(newBlurayDrive(newMemory(newMacbook()))); console.log(myMacbook.cost());
热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西