Singleton (单例)模式
它限制了类的实例化次数只能是一次,在该实例不存在的情况下,可以通过一个方法创建一个类来实现创建类的新实例;如果实例已经存在,它会简单返回该对象的引用。
1 | var mySingleton = (function() { |
有关Single模式适用性的描述如下。
- 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
- 该唯一的实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
这些观点另外关联到一个场景,这里我们可能需要如下这样的代码:
1 | mySingleton.getInstance = function(){ |
在这里,getInstance变得有点像Factory(工厂)方法,当访问它时,我们不需要更新代码中的每个访问点。FooSingleton(上面)将是一个BasicSingleton的子类,并将实现相同的接口。
在实践中,当在系统中确实需要一个对象来协调其他对象时,Singleton模式是很有用的。
1 | var SingletonTester = (function() { |