定义
单例模式的定义为: 保证一个类仅有一个实例,并提供一个访问它的全局访问点; 其核心思想就是确保只有一个实例,并提供全局访问。
前端页面中经常遇到的登录框就是一个单例,它有且只有一个存在。如下面的程序:
var createSingleLoginLayer = function(){
var loginDiv;
return funciton(){
if(!loginDiv){
loginDiv = "登录框";
}
return loginDiv;
}
}
// 惰性单例
Singleton.getInstance = function(){
var instance = null;
return function( name ){
if(!instance){
instance = new Singleton(name);
}
return instance;
}
}
另外我们经常遇到的全局变量,如:var aa=1,它在全局只有一个的,也属于一种单例(当然这个单例是js语言设计的问题)。为了解决变量名污染问题,需用namespace来进行解决:
var _genPackage = function(_namespace){
if (!_namespace||!_namespace.length) return null;
var _package = window;
for(var a=_namespace.split('.'),
l=a.length,i=(a[0]=='window')?1:0;i<l;
_package=_package[a[i]]=_package[a[i]]||{},i++);
return _package;
};
// _genPackage("const").name = "ahu";
单例模式是一种非常简单并且实用的模式,在合适的适合创建对象,并且之创建唯一一个。