javascript - 揭示模式用例

标签 javascript design-patterns factory revealing-module-pattern

我正在读 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/

相关文章:

javascript - 使用编辑从jsp获取servlet中的条目并通过Javascript保存

java - OOP 使用子类的实例初始化实例变量

c++ - 我的程序结构/设计所需的输入

enums - 您什么时候会优先使用具有关联值的枚举而不是静态工厂?

JavaScript嵌套对象数组,如何循环遍历数组的 'KEY'?

javascript - 如何根据 obj 标志的状态查找数组长度

php - JS 日期时间到 PHP 的转换

javascript - 忘记使用良好的域模型进行服务器端表单验证?

Typescript AST 工厂 - 如何使用注释?

javascript - 工厂功能效率