标签:javascript 设计模式
单例模式
/**
 * 1.最简单的单体模式就是一个对象字面量,用于将一组属性和方法组织在一起。
 */
var Application = {
    version: 1.0,
    getAppInfo: function () {
        return "app";
    }
};
/**
 * 2. 为了能在单例对象中创建真正的私有变量,可以使用闭包。
 * 由于单例对象只会存在一份,因此可以忽略私有属性占有的内存空间问题。
 */
var Application2 = (function () {
    //私有属性
    var version = 1.0;
    var author = "test";
    //私有方法
    function privateMethod() {
        //......
    }
    /**
     * 返回的对象包含的属性和方法都是公有的,可以在外部调用的!
     */
    return {
        getVersionNumber: function () {
            return version;
        },
        getAuthor: function () {
            return author;
        }
    }
})();
/**
 * 3. 懒加载的单例对象(不常用,只适用于那些实例化成本很高,具有大量数据需要加载的单例对象)。
 * 一般的单体最好还是立即实例化!
 */
var Application3 = (function () {
    var instance;
    //将上面例子中单体的代码移到一个构造化函数中来
    function constructor() {
        //私有属性
        var version = 1.0;
        var author = "test";
        //私有方法
        function privateMethod() {
            //......
        }
        /**
         * 返回的对象包含的属性和方法都是公有的,可以在外部调用的!
         */
        return {
            getVersionNumber: function () {
                return version;
            },
            getAuthor: function () {
                return author;
            }
        }
    }
    return {
        getInstance: function () {
            if (!instance) {
                instance = constructor();
            }
            return instance;
        }
    }
})();
alert(Application2.getVersionNumber());  //调用立即实例化的单例对象
alert(Application3.getInstance().getAuthor());//调用懒加载的单体对象
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:javascript 设计模式
原文地址:http://blog.csdn.net/yijianbo_/article/details/47175209