美文网首页
JS pattern之Singleton pattern

JS pattern之Singleton pattern

作者: ifcode | 来源:发表于2014-05-29 15:19 被阅读181次

所谓singleton pattern,就是指程序中任何时候只存该object的一个instance。 如果每次创建一个新的instance只为了使用同样的功能,就该考虑采用singleton pattern了。比如数据库连接处理,或是前端的ajax请求等每次都一样的对象,采用Singleton模式不仅使代码简洁清晰,也减少了创建对象的开销。

一个具体的例子:

var obj1 = new Singleton();
var obj2 = new Singleton();
obj1 === obj2; // true
obj1.test = 1;
obj2.test; // => 1

obj1和obj2分别新建了一个Singleton的对象实例,但实际上他们指向的是同一个对象实例。也说明了无论何时,系统中只会存在Singleton对象的一个实例。

实现Singleton的方式非常多,最简单的如不采用constructor的话,object literal也算是Singleton。下面这种方式是我认为比较优秀的实现,不仅简洁可读,也适用于strict模式。

var Singleton = function(){
  
  if (Singleton.prototype._singletonInstance) {
    return Singleton.prototype._singletonInstance;
  }
  
  Singleton.prototype._singletonInstance = this;  // first instance obect
  
  this.test = 1;
  
};

这里的要点是在prototype上加上一个共享属性,指向第一个调用constructor的instance。以后再调用constructor的时候,就不再生成新的实例,而是返回先前创建的实例了。

相关文章

网友评论

      本文标题:JS pattern之Singleton pattern

      本文链接:https://www.haomeiwen.com/subject/jrpdtttx.html