我正在阅读Addy Osmani的一本名为“Learning javascript design patterns”的书。这本书很棒。揭示模式用例
有使用揭示设计模式的一个例子:
var myRevealingModule = (function() {
var privateVar = "Ben Cherry",
publicVar = "Hey there!";
function privateFunction() {
console.log("Name:" + privateVar);
}
function publicSetName(strName) {
privateVar = strName;
}
function publicGetName() {
privateFunction();
}
// Reveal public pointers to
// private functions and properties
return {
setName: publicSetName,
greeting: publicVar,
getName: publicGetName
};
})();
myRevealingModule.setName("Paul Kinlan");
现在,我当然明白它是如何工作的,但我的simpler-什么用的情况下在有规律的,经典的节点使用这个问题Web应用程序?
比方说,我有一个汽车模块,我希望在某些程序中创建。我看不出在这种情况下如何使用模式。我如何传递参数以使new Car(args)
?
我应该将这种模式用于单身吗?创建工厂?
好吧,这是工厂模式的一个例子。这是一个公平的使用,我知道它。问题是我使用揭示模块的其他用例。 – Chen
我认为这个名字是误导性的,因为这实际上适用于函数以及模块,如果您不是返回一个函数的对象文字,而是您现在有一个函数可以在调用之间具有内部状态(这是另一个用例) – thedude
函数具有不同调用之间的状态。听起来很可怕 - 我不得不承认。函数应该是一个函数,就是这样,IMO。奇怪的是把函数当作一个有状态的对象,而不仅仅是作为异步操作的回调。我想这种工厂模式是最好的用例。 – Chen