单例设计模式

204 阅读1分钟

使用场景

  1. 当在某个上下文中,要求某个东西只能有唯一一个,只要被创建一次,后面再去创建也应用的是第一次创建的,因此一般是一个引用类型的东西。

实现思想

  • 在具有类概念的编程语言中,一般是在类中设置一个静态变量来保存第一次创建的那个对象,以后每次创建都返回这个静态变量。
  • js中一般采用闭包的形式来完成,当然ES6中提供类的写法,但是只是语法糖而已。

具体代码

var mySingleTon = (function () {
    var UNIQUE_INSTANCE = null;
    function init() {
        // 私有变量
        var privateVariable = '我是一个私有的变量';
        // 私有方法
        function privateMethod() {
            console.log('我是一个私有的方法');
        }
        // 返回一个对象,该对象在上下文中只能存在一个
        return {
            // 外部可以访问的变量
            name: '我是一个外部可以访问的属性',
            // 外部可以访问的方法
            publicMethod: function () {
               console.log('我是一个外部可以访问的方法'); 
            },
            getPrivateVariable: function () {
                return privateVariable;
            }
        };
    }
    return {
        getInstancce: function () {
            if (UNIQUE_INSTANCE === null) {
                UNIQUE_INSTANCE = init();
            }
           return UNIQUE_INSTANCE;
        }
    };
})();