单体模式
单体的定义:单体是一个用来划分命名空间并将一批相关方法和属性组织到一起的对象,如果可以被实例化,那么它只能被实例化一次
简单叙述单体模式:
1.最简单的单体与普通的对象没有区别。
2.可以作为命名空间,来减少全局变量的污染,有利于代码的组织和维护。
MynameSpace = { attr:"zyy", getName:function(){ return MynameSpace.attr; } }
3.模块模式,拥有自己的私例属性和函数。
MynameSpace.Singleton = {}; MynameSpace.Singleton = (function(){ return { }; )();
4.可以使用惰性实例化,对于一些有大量数据和不必需要立即实例化的单体,可以减少不必要的内存消耗(带宽消耗)。
var Singleton = (function(){ var instance; function constructor(){ //这里返回对象 return{ }; } return { getInstance:function(){ if(!instance) instance = constructor(); return instance; } }; })();
5.分支技术,可以封装一些浏览器的之间的差异,但是需要权衡内存消耗以及执行速度。在运行时候,执行一次运行环境嗅探
可以提高函数的执行效率。
MyNameSpace.Singleton=(function(){ var objectA = { method1:function(){ }, }; var objectB = { method1:function(){ }, }; return (someCondition)?objectA:objectorB; })();