欢迎来到天天文库
浏览记录
ID:30517632
大小:16.92 KB
页数:6页
时间:2018-12-31
《深入理解javascript系列(29):设计模式之装饰者模式详解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解深入理解JavaScript系列(29):设计模式之装饰者模式详解 这篇文章主要介绍了深入理解JavaScript系列(29):设计模式之装饰者模式详解,装饰者用用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置成原始对象调用(例如装饰者的构造函数),需要的朋友可以参考下 介绍 装饰者提供比继承更有弹性的替代方案。装饰者用用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置
2、成原始对象调用(例如装饰者的构造函数)。 装饰者用于通过重载方法的形式添加新功能,该模式可以在被装饰者前面或者后面加上自己的行为以达到特定的目的。 正文 那么装饰者模式有什么好处呢?前面说了,装饰者是一种实现继承的替代方案。当脚本运行时,在子类中增加行为会影响原有类所有的实例,而装饰者却不然。取而代之的是它能给不同对象各自添加新行为。如下代码所示: 代码如下: //需要装饰的类(函数) functionMacbook(){对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的
3、忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 this.cost=function(){ return1000; }; } functionMemory(macbook){ this.cost=function(){ returnmacbook.cost()+75; }; } functionBlurayDrive(macbook){ this.cost=function(){ returnmacbook.cost()+30
4、0; }; } functionInsurance(macbook){ this.cost=function(){ returnmacbook.cost()+250; }; } //用法 varmyMacbook=newInsurance(newBlurayDrive(newMemory(newMacbook())));对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程
5、,对党的性质、宗旨、任务等基本知识有了进一步的了解 console.log(myMacbook.cost()); 下面是另一个实例,当我们在装饰者对象上调用performTask时,它不仅具有一些装饰者的行为,同时也调用了下层对象的performTask函数。 代码如下: functionConcreteClass(){ this.performTask=function(){ this.preTask(); console.log('doingsomething'); this.postTask(); }; } functio
6、nAbstractDecorator(decorated){ this.performTask=function(){ decorated.performTask(); }; } functionConcreteDecoratorClass(decorated){ this.base=AbstractDecorator; this.base(decorated); decorated.preTask=function(){ console.log('pre-calling..');对党的认识也有了进一步的提高。才真正体会到了中国共产
7、党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 }; decorated.postTask=function(){ console.log('post-calling..'); }; } varconcrete=newConcreteClass(); vardecorator1=newConcreteDecoratorClass(concrete); vardecora
8、tor2=newConcreteDecoratorClass(decorator1); decorator
此文档下载收益归作者所有