【问题标题】:Can Node.js module caching be used to create globally accessible singletons?可以使用 Node.js 模块缓存来创建全局可访问的单例吗?
【发布时间】:2012-07-02 05:05:51
【问题描述】:

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

model.js 模块内创建Model 类的实例然后在我需要的任何地方都需要这个model.js 模块是不是不好?

类似这样的:

Model = function () { ... }

module.exports = new Model();

这将依赖 Node 的 module caching 来允许在文件之间共享相同的 Model 实例,就像拥有一个全局单例一样。

或者我应该通过构造函数显式传递依赖关系?

【问题讨论】:

    标签: node.js dependencies mongoose


    【解决方案1】:

    我会说是的,这是一种不好的做法,很容易被滥用。它确保了紧密耦合的模块,这意味着如果您离开 mongoose,您将不得不修改每个涉及数据库的文件。出于同样的原因,滥用单例是不好的。

    仅仅因为许多人以特定的方式做某事并不意味着这是一件好事。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢。我意识到我可以通过在任何模块中编写User = mongoose.model('User') 来获得我的mongoose 模型,所以他们似乎正在使用这种模式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 2013-05-30
      • 2017-02-14
      相关资源
      最近更新 更多