单例设计模式:限制类的实例化次数只有一次
javascript的实现 let's me show code
var mysingleton = (function(){
var instance;
function init(){
//私有方法
function privateMethod(){
console.log("I am private")
}
//私有变量
var privateVariable = "Im also private";
//私有变量,每次对象被创建时就会创建一个随机数,只要比较随机数就可以判断两者是否是同一实例
var privateRandomNumber = Math.random();
return {
//对外暴露的共有方法
publicMethod: function(){
console.log("the public can see me!");
},
//对外暴露的共有变量
publicProperty:"I am public prop",
//通过共有方法将私有变量暴露出去
getRandomNumber: function(){
return privateRandomNumber
}
}
}
return {
//初始化实例,判断实例是否被创建。没有就创建,有就返回
getInstance: function(){
if(!instance){
instance = init()
}
return instance;
}
}
})()
et obj = mysingleton.getInstance()
let obj1 = mysingleton.getInstance()
console.log(obj.getRandomNumber())//0-1 的double小数
console.log(obj1.getRandomNumber())//0-1 的double小数
console.log(obj.getRandomNumber() === obj1.getRandomNumber())//true