单例(Singleton)的定义:
The idea of the singleton pattern is to have only one instance of a specific class. This means that the second time you use the same class to create a new object, you should get the same object that was create the first time.单例模式是指在程序中一种特殊的类(class),他们仅有一个实例。这意味着当这个类在被第一次实例化后,之后的实例化操作都将获得到第一次实例化时产生的实例。
对象字面量与单例
以对象字面量(Object Literal)定义的对象本身即为单例:
|
|
对象字面量实现单例模式的另外一种形式:
|
|
构造函数与单例
通过 new
操作符调用构造函数创建对象的方式中,实现单例模式的关键点在于:
- 第一次调用构造函数时,存储创建的实例
- 后续的调用,直接返回实例
依据这个思路,有三种实现方式。
第一种最为简单,但也是最不可靠的方式:将实例存储在全局变量中。
|
|
第二种方法,将实例存储在构造函数的静态属性中。相对第一种方式,此方式显然会比较安全一些,但此构造函数的静态属性仍然存在被修改的可能性。
|
|
第三种方式,采用闭包。第一次调用之后,存储实例,并改写构造函数自身。
|
|