是否可以使用 Node.js 模块缓存来创建全局可访问的单例



将我的项目拆分为许多OO类后,我必须通过多个构造函数传递对Model实例(包含猫鼬模型和模式)的引用。

model.js模块中创建 Model 类的实例,然后在我需要它的所有地方都需要这个model.js模块,这是否是一种不好的做法?

像这样:

Model = function () { ... }
module.exports = new Model();

这将依赖于 Node 的模块缓存来允许在文件之间共享相同的Model实例,例如具有全局单例。

还是应该通过构造函数显式传递依赖项?

不,这不是一个坏做法。事实上,很多人都是这样做的。

我会

说是的,这是一种不好的做法,很容易被滥用。它确保了紧密耦合的模块,这意味着如果你离开猫鼬,你将不得不修改接触数据库的每个文件。这是不好的,原因与滥用单例是不好的相同原因。

仅仅因为许多人以特定的方式做某事绝不表明这是一件好事。

最新更新