【发布时间】:2018-11-20 20:11:34
【问题描述】:
关于 javascript 中的单例模式有很多问题。我找到的所有答案都推荐:
IIFE 生产隐藏在封闭中的工厂。然后使用那个工厂,我们可以调用
getInstance()避免依赖
require(和 node.js 模块)作为获得单例的一种方式。
但是我们必须将该工厂存储在某个地方,以便其他模块可以访问它。它不能存储在任何随机模块中,因为那时我们依赖require。在这种情况下,拥有安全单例的唯一方法似乎是:
- 将工厂存储在全局变量中或
- 让顶级脚本管理单例实例的创建(并将其传递给其他模块)
其中一个比另一个更好吗?还有其他方法吗?
【问题讨论】:
-
避免依赖 require(和 node.js 模块)作为获取单例的方式 - 这是一个错误。 它不能存储在任何随机模块中,因为那时我们依赖于 require - 为什么这是个问题?
-
@estus medium.com/@lazlojuly/…
-
文章包含正确的事实,但结论毫无根据。 Node 的模块缓存机制区分大小写 - 文件系统不区分大小写。 模块会根据解析后的文件名进行缓存 - 这可用于好坏。
标签: javascript node.js design-patterns singleton