美文网首页
显示(揭示)模块模式

显示(揭示)模块模式

作者: pws019 | 来源:发表于2017-04-30 13:03 被阅读33次

The Revealing Module Pattern(显示模块模式)

现在我们已经对模块模式有了更进一步的了解,让我们再来看一个轻微的改进版 - Christian Heilmann的显示模块模式。

显示模块的出现是由于Heilmann对于一个事实非常沮丧,当他从另一个方法调用一个公有方法或者访问公有变量时,必须要重复主对象的名称。而且使用Module时必须要切换到对象字面量表示法来让某种方法变成公有方法。

他努力的结果就是更新了模式,我们可以在私有的作用域内简单的定义所有的方法和变量,并且返回一个匿名的对象指向我们希望公开的私有方法。

案例如下:


var myRevealingModule = (function () {

        var privateVar = "Ben Cherry",
            publicVar = "Hey there!";

        function privateFunction() {
            console.log( "Name:" + privateVar );
        }

        function publicSetName( strName ) {
            privateVar = strName;
        }

        function publicGetName() {
            privateFunction();
        }


        // 显示的公有对象指向私有的方法和属性

        return {
            setName: publicSetName,
            greeting: publicVar,
            getName: publicGetName
        };

    })();

myRevealingModule.setName( "Paul Kinlan" );

如果我们愿意的话,这种模式也可以用一个更具体的方案来显示私有函数和属性。


var myRevealingModule = (function () {

        var privateCounter = 0;

        function privateFunction() {
            privateCounter++;
        }

        function publicFunction() {
            publicIncrement();
        }

        function publicIncrement() {
            privateFunction();
        }

        function publicGetCount(){
          return privateCounter;
        }

        // Reveal public pointers to
        // private functions and properties

       return {
            start: publicFunction,
            increment: publicIncrement,
            count: publicGetCount
        };

    })();

myRevealingModule.start();

优点

这种模式可以让我们脚本的语法变得更加一致,它也让模块的结尾更加的清晰。我们的方法和变量可公开访问,从而简化可读性。

缺点

如果一个私有方法引用了一个公有的方法,如果补丁是必要的则公有方法是不可以被重写的。这是因为私有方法将继续引用私有的实现并且模式不应该应用于私有成员,只适用于私有函数。

引用私有变量的公有对象成员也服从上面的无补丁规则。

因此,用显示模块模式创建的模块,可能比用传统的模块模式创建的模块更脆弱,所以在使用过程中应多加小心。

相关文章

  • 显示(揭示)模块模式

    The Revealing Module Pattern(显示模块模式) 现在我们已经对模块模式有了更进一步的了解...

  • 《SPA设计与架构》之JavaScript模块化

    原文 博客原文 大纲 1、什么是模块?2、基本的模块模式3、模块模式概念4、模块结构5、揭示模式6、模块编程的意义...

  • Revealing Module (揭示模块) 模式

    揭示模块模式其实是 Module 模式的稍改进版,因为使用 module模式时,必须要切换到对象字面量表示法来让某...

  • 嵌入式学习笔记19.12.19

    红绿灯 模式切换:显示模式->设置模式 Key1 调整三种模式:红绿黄 Key2 增加 超时结束输入状态 语音模块...

  • 手机开发实战40——手机模块设计1

    模块设计 根据以上设计模式和设计原则,功能模块的划分如下: MMI层模块的组成: 视图-负责界面显示,通常是GUI...

  • JavaScript 设计模式

    1、构造函数constructor 2、模块化 module 3、揭示模块 reavealing module 4...

  • 前端设计模式

    模块模式 工厂模式 构造函数模式 混合模式 单例模式 发布订阅模式 模块模式 用于模块封装,用立即执行的函数嵌套一...

  • 2018-07-27 day10 Pygame模块

    Pygame模块 显示文字 显示图片 显示图形 动画

  • 高级任务6-前端设计模式

    写出 构造函数模式、混合模式、模块模式、工厂模式、单例模式、发布订阅模式的范例 构造函数模式 混合模式 模块模式 ...

  • 前端设计模式

    写出 构造函数模式、混合模式、模块模式、工厂模式、单例模式、发布订阅模式的范例。 构造函数模式 混合模式 模块模式...

网友评论

      本文标题:显示(揭示)模块模式

      本文链接:https://www.haomeiwen.com/subject/eiqxtxtx.html