javaScript设计模式——单例设计模式

155 阅读1分钟

单例设计模式:限制类的实例化次数只有一次

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