资源描述:
《总结javascript设计模式编程中的享元模式使用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解总结JavaScript设计模式编程中的享元模式使用 享元模式不同于一般的设计模式,它主要用来优化程序的性能,它最适合解决大量类似的对象而产生的性能问题。享元模式通过分析应用程序的对象,将其解析为内在数据和外在数据,减少对象的数量,从而提高应用程序的性能。 基本知识 享元模式通过共享大量的细粒度的对象,减少对象的数量,从而减少对象的内存,提高应用程序的性能。其基本思想就是分
2、解现有类似对象的组成,将其展开为可以共享的内在数据和不可共享的外在数据,我们称内在数据的对象为享元对象。通常还需要一个工厂类来维护内在数据。 在JS中,享元模式主要有下面几个角色组成: (1)客户端:用来调用享元工厂来获取内在数据的类,通常是应用程序所需的对象, (2)享元工厂:用来维护享元数据的类 (3)享元类:保持内在数据的类 享元模式的实现和应用 一般实现对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学
3、习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 我们举个例子进行说明:苹果公司批量生产iphone,iphone的大部分数据比如型号,屏幕都是一样,少数部分数据比如内存有分16G,32G等。未使用享元模式前,我们写代码如下: functionIphone(model,screen,memory,SN){ this.model=model; this.screen=screen; this.memory=memory; thi
4、s.SN=SN; } varphones=[]; for(vari=0;i varmemory=i%2==0?16:32; phones.push(newIphone("iphone6s",5.0,memory,i)); } 这段代码中,创建了一百万个iphone,每个iphone都独立申请一个内存。但是我们仔细观察可以看到,大部分iphone都是类似的,只是内存和序列号不一样,如果是一个对性能要求比较高的程序,我们就要考虑去优化它。 大量相似对象的程序,我们就可以考虑用享元模式去优化它,我们分析
5、出大部分的iphone的型号,屏幕,内存都是一样的,那这部分数据就可以公用,就是享元模式中的内在数据,定义享元类如下: functionIphoneFlyweight(model,screen,memory){对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 this.model=model;
6、 this.screen=screen; this.memory=memory; } 我们定义了iphone的享元类,其中包含型号,屏幕和内存三个数据。我们还需要一个享元工厂来维护这些数据: varflyweightFactory=(function(){ variphones={}; return{ get:function(model,screen,memory){ varkey=model+screen+memory; if(!iphones[key]){ ip
7、hones[key]=newIphoneFlyweight(model,screen,memory); } returniphones[key]; } }; })(); 在这个工厂中,我们定义了一个字典来保存享元对象,提供一个方法根据参数来获取享元对象,如果字典中有则直接返回,没有则创建一个返回。对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学
8、习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 接着我们创建一个客户端类,这个客户端类就是修改自iphone类: functionIphone(model,screen,memory,SN){ this.flyweight=flyweightFactory.get(model,screen,memory);