javascript单例模式(懒汉 饿汉)

第一种:懒汉模式

var Singleton=(function(){

    var instantiated;  //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢

    function init(){

        /*这里定义单例代码*/

        return{

            publicMethod:function(){

                console.log('helloworld');

            },

            publicProperty:3

        };

    }

    return{

        getInstance:function(){

            if(!instantiated){

                instantiated=init();

            }

            return instantiated;

        }

    };

})();

/*可在其他类调用公有的方法或属性来获取实例:*/

Singleton.getInstance().publicMethod();

Singleton.getInstance().publicProperty = 4;

console.log(Singleton.getInstance().publicProperty);

 

第二种:饿汉模式

var Singleton=(function(){

    var instantiated = init();  //比较饿,在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

    function init(){

        /*这里定义单例代码*/

        return{

            publicMethod:function(){

                console.log('helloworld');

            },

            publicProperty:3

        };

    }

    return{

        getInstance:function(){

            return instantiated;

        }

    };

})();

 

 

你可能感兴趣的:(JavaScript)