我正在读 Addy Osmani 写的一本名为“学习 javascript 设计模式”的书。这本书很棒。
有一个使用揭示性设计模式的示例:
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" );
现在,我当然了解它是如何工作的,但我的问题更简单 - 在常规的经典节点 Web 应用程序中使用它的用例是什么?
假设我有一个汽车模块,我希望在我拥有的某个程序中创建它。我不明白在这种情况下如何使用该模式。如何传递参数来制作 new Car(args)
?
我应该对单例使用这种模式吗?创建工厂?
最佳答案
此模式用于封装一些私有(private)状态,同时公开(“揭示”)公共(public)接口(interface)。
这种模式可以有很多用例,但其核心展示了如何将实现(私有(private)变量)与 API(公开的函数)分开,这在 javascript 中实现起来并不简单。
每当您有一个具有状态的模块时,最好使用它。
要提供参数,只需公开一个接受参数的 API 函数,例如
return {
createCar: function(model, mileage) { ... }
}
关于javascript - 揭示模式用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43464741/