这是对Module模式的一个改进版本。方便集中管理公有API,使公有API更简洁清楚。

var myRevealingModule = function () {
var privateVar = "Ben Cherry",
publicVar = "Hey there";
function privateFunction() {
console.log("Name: " + privateVar);
}
function publicSetName(strName) {
var privateName = strName;
}
function publicGetName () {
privateFunction();
}
// 将暴露的公有指针指向私有函数和属性上
return {
setName: publicSetName,
greeting: publicVar,
getName: publicGetName
};
}();
myRevealingModule.setName("Paul Kinlan");
console.log(myRevealingModule.greeting);    // Hey there
myRevealingModule.getName();                // Name: Ben Cherry

优点:该模式可以使脚本语法更加一致。在模块代码底部,它会很容易指出哪些函数和变量可以被公开访问,从而改善可读性。
缺点:如果一个私有函数医用一个公有函数,在需要打补丁时,个哦剛女友函数是不能被覆盖的。这是因为私有函数将继续引用私有实现,该模式不适用与公有成员,只适用于函数。
引用私有变量的公有对象成员也遵守无补丁规则。

Javascript 设计模式 -- Revealing Module(揭示模块)模式相关推荐

  1. JS设计模式之Module(模块)模式、Revealing Module(揭示模块)模式

    Module(模块)模式 概念 Module模式最初被定义为一种在传统软件工程中为类提供私有和共有封装的方法. 通过这种方式,能够使一个单独的对象拥有共有/私有方法和变量,从而屏蔽来自全局作用局的特殊 ...

  2. JavaScript设计模式之构造器、模块和原型

    JavaScript面向对象 JavaScript是一种无类语言,但可以使用函数来模拟,这就涉及到设计模式.模式是一种已经验证过的可复用的解决方案,可用于解决软件设计中遇到的常见的问题,通常将这些解决 ...

  3. 《JavaScript设计模式与开发实践》模式篇(5)—— 观察者模式

    发布-订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状 态发生改变时,所有依赖于它的对象都将得到通知.在 JavaScript 开发中,我们一般用事件模型 来替代传统的发布- ...

  4. 《JavaScript设计模式与开发实践》模式篇(12)—— 装饰者模式

    在传统的面向对象语言中,给对象添加功能常常使用继承的方式,但是继承的方式并不灵活, 还会带来许多问题:一方面会导致超类和子类之间存在强耦合性,当超类改变时,子类也会随之 改变;另一方面,继承这种功能复 ...

  5. JavaScript设计模式系列四之外观模式(附案例源码)

    文章初衷 设计模式其实旨在解决语言本身存在的缺陷, 目前javaScript一些新的语法特性已经集成了一些设计模式的实现, 大家在写代码的时候,没必要为了用设计模式而去用设计模式, 那么我这边为什么还 ...

  6. 《JavaScript设计模式与开发实践》模式篇(3)—— 代理模式

    代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问 故事背景: 假设当 A 在心情好的时候收到花,小明表白成功的几率有 60%,而当 A 在心情差的时候收到花,小明表白的成功率无限趋近于 ...

  7. JavaScript 绝妙的函数:模块模式

    原文:https://www.jianshu.com/p/34dbd81d4c77 Awesome Function: module pattern 在线演示 利用函数的闭包不仅可以非常轻松地实现模块 ...

  8. 【javascript设计模式】3.Revealing Module(揭示)模式

    ⭐️ 本文首发自 前端修罗场(点击加入),是一个由 资深开发者 独立运行 的专业技术社区,我专注 Web 技术.Web3.区块链.答疑解惑.面试辅导以及职业发展.博主创作的 <前端面试复习笔记& ...

  9. 设计模式(9)[JS版]-JavaScript设计模式之如何实现桥接模式???

    目录 1 什么是桥接模式 2 参与者 3 实例讲解 4 总结 1 什么是桥接模式 Bridge模式允许两个组件,即客户端和服务一起工作,每个组件都有自己的接口.Bridge是一种高级架构模式,它的主要 ...

  10. JavaScript 设计模式 : 巧用'工厂模式'和'创建者'模式

    我为什么把他们两个放在一起讲?我觉得这两个设计模式有相似之处,有时候会一个设计模式不能满足你的需求而采用另一种设计模式.基于这点考虑,而且为了大家更好地理解,我放到了一起,加深大家的印象,活学活用. ...

最新文章

  1. springBoot之过滤器和拦截器的使用
  2. CMAKE_CURRENT_BINARY_DIR
  3. linux下普通用户如何使用80端口启动程序
  4. 设计模式---建造者模式(DesignPattern_Builder)
  5. [PowerShell] PowerShell学习脚印
  6. MySql索引原理与使用大全
  7. 最重要的是跑完,而不是刚开始跑得有多快
  8. mysql union left join_Case:MySQL使用left join的时候or改写成union可以提高效率
  9. 初学网站建设,要学习些什么?
  10. DNS服务系列之二:DNS区域传送漏洞的安全案例
  11. 进程和线程的区别, 面相对象补充, 进程, 数据共享, 锁, 进程池, 爬虫模块(requests, bs4(beautifulsoup))...
  12. 马云宣布退休计划后,阿里巴巴组织架构再次全面升级
  13. python123词频统计之哈姆雷特_基于Yarn的Spark环境,统计哈姆雷特词频(1)-阿里云开发者社区...
  14. python的扩展库numpy如何安装_python如何安装numpy库
  15. 谁抢光了你的火车票?
  16. w3cschool菜鸟教程php,JS实例学习笔记——w3cschool+菜鸟教程
  17. 【开源项目分享】GitHub中文排行榜 - 帮助你发现高分优秀中文项目-Java
  18. 智课雅思词汇---六、fer是什么意思
  19. DAOS 分布式异步对象存储|事务模型
  20. zoom和transform:scale()的区别

热门文章

  1. java 生成word 分页_Java 插入分页符和分节符到Word文档
  2. POC_Jenkins
  3. 免费丨永洪科技2017用户大会@北京
  4. 读书感受 之 《如何说客户才会听,怎么听客户才肯说》
  5. pika详解(二) BlockingConnection
  6. dwz导出excel java_完美解决dataset导出excel问题
  7. 单独备份config配置文件 (来自老梁邮件)
  8. SIM800C长短信学习笔记
  9. LibXL 算法分析(附注册机)
  10. pyinstaller里居然有木马?