设计模式JavaScript实现
GoF合作出版的《设计模式》这本书提供了许多有关与面向对象软件设计中常见问题的解决方案。这些模式已经出现了相当长的一段时间,已经被证明在许多情况下都非常有用。 单体模式 一个特定类仅有一个实例。这意味着当您第二次使用同一个类创建新对象的时候,应该得到与第一次所创建对象完全相同对象。 使用对象字面量创建一个简单的对象也是一个单体的例子,因为在JavaScript中没有类,只有对象。当您创建一个新对象时,实际上没有其他对象与其类似,因此新对象已经是单体了。 var obj = { myprop: 'my value' }; 使用new操作符 JavaScript没有类,但是可以通过new语法使用构造函数来创建对象,有时有可能需要使用这种语法的单体实现。这种思想在于当使用同一个构造函数以new操作符来创建多个对象时,应该仅获得指向完全相同的对象的新指针。 静态属性中的实例 在构造函数的静态属性中缓存该实例。您可以使用类似Universe.instance的属性并将实例缓存在该属性中。这中方案的缺点在于instance属性是公开可访问的属性,在外部代码中可能会修改该属性。 function Universe() { if (typeof Universe.instance === 'object') { return Universe.instance; } this.start_time