一.单例模式
特点:Singleton不同与静态类(或对象)因为我们可以推迟他们的初始化,这通常是因为它们需要一些信息,而这些信息在初始化期间可能无法获得,这不同与程序一开始就初始化的模块模式。
======方法一============================
function Universe() {
//缓存实例对象
var instance;
//赋给新的构造函数函数
Universe = function () {
return instance;
}
//保留原型属性
Universe.prototype=this;
//创建实例对象 var people1=new Universe();
instance = new Universe();
//重置构造函数指针(这里instance.constructor指向的是原始的Universe构造函数)
instance.constructor=Universe;
//功能:
instance.func1=function(){};
instance.func2=function(){};
instance.func3=function(){};
instance.func4=function(){};
return instance;
}
//调用:
var people1=new Universe();
var people2=new Universe();
console.log(people1===people2) //true
=====方法二==============================
//该方法相当于动态的创建了一个模块模式
var mySingleton=(function(){
var instance;
function init(){
//私有方法
function privateMethod(){}
return{
//公共方法和变量
publicMethod:function(){},
publicProperty:'l am also puliv'
}
}
return {
getInstance:function(){
if(!instance){
instance=init();
}
return instance;
}
}
})();