JavaScript演示下Singleton设计模式

单例模式的基本结构:

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;
}
}
})();
上一篇:C# 将字节流转换为图片的实例方法(转)


下一篇:pyqt字符串分离开,放入列表中