我现在看到这种模式用于nodeJS实现,其中我们的模块有以下代码:
class Foo {
bar() {
console.log('bar');
}
}
module.exports = Foo;
然后当我做一个require并最终说新建一个类的实例时。
var Foo = require(./foo);
var myFoo = new Foo();
myFoo.bar();
根据我的这个模式,每次调用它时都会继续创建Foo类的多个实例。
另一种模式可能就是我习惯于在我的foo.js中的位置。
module.exports = {
bar: function() {
console.log('bar');
}
};
然后我只需要并致电吧。
var foo = require(./foo);
foo.bar();
这两个问题的行为是否相同?第二种模式是否会在我需要的时候继续创建对象并在对象上调用bar?
在案例1中创建单例模式不是一个好主意,因为我们习惯于使用其他语言,如果已经创建过一次,我们会继续提供相同的实例吗?
答案 0 :(得分:9)
根据我的这个模式,每次调用它时都会继续创建Foo类的多个实例。
是的,这就是目的。虽然require()
在您的示例中也只执行一次。
这两个表现相同吗?
没有
第二种模式是否会在我需要的时候继续创建对象并在对象上调用bar?
没有。缓存class
次调用,每次都返回相同的模块。
不是创造单身模式是一个好主意吗?
不,如果单身包含任何状态,单身人士很少是个好主意。您的示例没有,但在Node.js中使用{{1}} es通常会这样做。