简明现代魔法 -> JavaScript -> JavaScript 单例模式

JavaScript 单例模式

2010-06-15

单例模式的基本结构:

MyNamespace.Singleton = function() {
	return {};
}();

比如:

MyNamespace.Singleton = (function() {
	return 
    { 
    	// Public members.
		publicAttribute1: true,
		publicAttribute2: 10,
		publicMethod1: function() {
		...
		},
		publicMethod2: function(args) 
    	{
			...
		}
	};
})();

但是,上面的Singleton在代码一加载的时候就已经建立了,怎么延迟加载呢?采用下面这种模式:

MyNamespace.Singleton = (function() {
	function constructor() 
    { 
    	// All of the normal singleton code goes here.
		...
	}
	return 
    {
		getInstance: function() 
        {
			// Control code goes here.
		}
	}
})();

具体来说,把创建单例的代码放到constructor里,在首次调用的时候再实例化:

完整的代码如下:

MyNamespace.Singleton = (function() {
	var uniqueInstance; // Private attribute that holds the single instance.
	function constructor() 
    { 
    	// All of the normal singleton code goes here.
		...
	}
	return 
    {
		getInstance: function() 
        {
			if(!uniqueInstance) { 
            // Instantiate only if the instance doesn't exist.
    		uniqueInstance = constructor();
		}
		return uniqueInstance;
	}
}
})();
随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们