1.单例模式又被称为单体模式,是指允许实例化一次的对象类。有时也用一个对象来规划一个命名空间,并井井有条地管理对象上的属性和方法
单例模式常用来定义命名空间
var ming={
g:function(id){
return document.getElementById(id);
},
css:function(id,key,value){
this.g(id).style[key]=value;
}
};
2.模块分明–单例模式还可以用来管理代码库的各个模块,比如
baido.dom.addClass
baidu.dom.append
baidu.event.stopPropagation
baidu.event.preventDefault
baidu.event.trim
baidu.string.encodeHTML
3.写小型方法库的时候可使用单例模式来规范我们自己代码库的
var M={
Unil:{
unil_method1:function(){},
unil_method2:function(){}
},
Tool:{
tool_method1:function(){},
tool_method2:function(){}
},
Ajax:{
get:function(){},
post:function(){}
},
other:{
//...
}
};
/*使用*/
M.Unil.unil_method1();
M.Tool.tool_method1();
M.Ajax.get();
4.无法修改的静态变量
var Conf=(function(){
var conf={
MAX_NUM:100,
MIN_NUM:1,
COUNT:1000
};
return {
get:function(name){
return conf[name]? conf[name] : null;
}
};
})();
var count=Conf.get('COUNT');
console.log(count);
5.惰性单例
var LazySingle=(function(){
var _instance=null;
function Single(){
return {
publicMethod:function(){},
publicProperty:'1.0'
};
}
return function(){
if(!_instance){
_instance=Single();
}
return _instance;
};
})();
console.log(LazySingle().publicProperty);