最近我看到 Node.js 实现中出现了这种模式,其中我们有以下代码:
class Foo {
bar() {
console.log('bar');
}
}
module.exports = Foo;
当我执行 require 并最终使用 new 创建一个类的实例时。
var Foo = require(./foo);
var myFoo = new Foo();
myFoo.bar();
在我的看法中,这种模式每次被调用时都会创建多个类Foo的实例。
另一种模式可能是我习惯的,在我的foo.js文件中:
module.exports = {
bar: function() {
console.log('bar');
}
};
然后我只需要require并调用bar。
var foo = require(./foo);
foo.bar();
这两个代码片段的行为是否相同?第二个代码每次调用 bar 方法时都会创建对象吗?
在这种情况下,创建单例模式是一个好主意吗?就像其他语言中那样,如果已经创建了实例,我们保持使用同一个实例。