JavaScript设计模式之单例模式


单例模式是一种常用的模式,有些对象只需要一个

如线程池、全局缓存、浏览器中的window对象等

定义

保证一个类仅有一个实例,并提供一个访问它的全局访问点

应用场景

单击按钮时,页面中会出现一个登陆浮窗,而该登录浮窗是唯一的,无论单击多少次按钮,
这个浮窗都会被创建一次,则适合用单例模式创建

实现方式

经典Singleton模式的实现方式是,如果实例不存在,通过一个方法创建一个实例。如果已经存在,
则返回实例的引用

Singleton与静态类(对象)不同的是,它可以被延迟生成,只有在需要的时候才会生成实例

最简单的一个方式是使用对象字面量的方法,其字面量里可以包含大量的属性和方法

var singleton = (function() {
    var instance;

    function init() {
        // define private methods and properties
        // do something
        return {
            // define public methods and properties
            publicMethod: function() {
                console.log('hello singleton!')
            },
            publicProperty: 'test'
        };
    }
    return {
        getInstance: function() {
            if (!instance) {
                instance = init()
            }
            return instance
        }
    }
})();

singleton.getInstance().publicMethod(); // hello singleton!
console.log(singleton.getInstance().publicProperty); // test

参考: 《JavaScript 设计模式与开发实践》

你可能感兴趣的:(JavaScript设计模式之单例模式)