JavaScript 设计模式 - 单例模式
单例模式
用于保存全局变量,减少内存使用等
[实现代码]
var MyNameSpace = {};
MyNameSpace.Singleton = (function() {
// private members
var privateAttribute = false;
// private functions
function privateMethod1() {
...
}
return {
// public members
publicAttribute1: true,
publicAttribute2: 12,
publicMethod: function() {
...
}
};
})();
有时候,使用以上方式的代码时,碰到类里面需要加载大量资源时,这种方式就会变得非常缓慢。
如果想等到使用单例对象的时候再加载,岂不是更好?这时候,就可以使用 "惰性加载" 方式解决。
// lazy loading singleton
MyNameSpace.Singleton = (function() {
// 把前面实现方式的代码统统放进这个 constructor 函数中,名字可任意起
function constructor() {
// private members
var privateAttribute = false;
// private functions
function privateMethod1() {
...
}
return {
// public members
publicAttribute1: true,
publicAttribute2: 12,
publicMethod: function() {
...
}
};
}
// 声明一个单例检测对象
var uniqueObj = null;
return {
// 对单例对象暴露的唯一方法
getInstance: function() {
if(!uniqueObj) {
uniqueObj = constructor();
}
return uniqueObj;
}
};
})();