您的位置:首页 > Web前端 > JavaScript

用JavaScript实现一个单例模式

2011-10-08 00:00 597 查看
单例模式的基本结构:


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;
	}
}
})();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐