导读 | 这篇文章主要为大家解析了Javascript设计模式Revealing Module 揭示模式及Singleton单例模式示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪 |
1. Revealing Module 揭示模式
该模式能够在私有范围内简单定义所有的函数和变量,并返回一个匿名对象, 它拥有指向私有函数的指针,该函数是他希望展示为公有的方法。
示例:
< script> var myRevealingModule = function () { var privateVar = "Ren Cherry", publicVar = "Hey there"; function privateFunction() { console.log("Name:"+privateVar); } function publicSetName(strName) { privateName = strName; } function publicGetName() { privateFunction(); } //将暴露的公有指针指向到私有函数和属性上 return { setName: publicSetName, greeting: publicvar, getName: publicGetName }; }(); myRevealingModule.setName("Paul Kinlan"); < /script>
优点:
2. Singleton 单例模式
单例模式,能够限制类的实例化次数只能为一次。单例模式,在该实例不存在的情况下, 可以通过一个方法创建一个类来实现创建类的新实例;如果实例已经存在,它会简单返回该对象的引用;
示例:
< script type="text/javascript"> var mySingleton = (function () { //实例保持了singleton 的一个引用 var instance; function init() { //singleton //私有方法和变量 function privateMethod() { console.log("I am private"); } var privateVariable = "I am also private"; var privateRandomNumber = Math.random(); return { //公有方法和变量 publicMethod: function () { console.log("The public can see me!"); }, publicProperty: "I am also public", getRandomNumber: function() { return privateRandomNumber; } }; }; return { //获取singleton 的实例,如果存在就返回,不存在就创建新实例 getInstance: function() { if(!instance) { instance = init(); } return instance; } }; })(); var singleA = mySingleton.getInstance(); var singleB = mySingleton.getInstance(); console.log(singleA.getRandomNumber()===singleB.getRandomNumber());//true < /script>
在实践中,当在系统中确实需要一个对象来协调其他对象时,>Singleton模式很有用。
示例:
< script type="text/javascript"> var SingletonTester = (function() { //options: 包含singleton所需配置信息的对象 //var options = {name:"test",pointX:5}; function Singleton(options) { //如果未提供options,则设置为空对象 options = options || {}; //为singleton设置一些属性 this.name = "SingletonTester"; this.pointX = options.pointX || 6; this.pointY = options.pointY || 10; } //实例持有者 var instance; //静态变量和方法的模拟 var _static = { name: "SingletonTester", //获取实例的方法,返回singleton对象的singleton实例 getInstance: function(options) { if(instance === undefined) { instance = new Singleton(options); } return instance; }; return _static; } })(); var singletonTest = SingletonTester.getInstance({ pointX: 5 }); console.log(singletonTest.pointX);//5 < /script>
以上就是解析Javascript设计模式Revealing Module 揭示模式单例模式的详细内容
原文来自:
本文地址://gulass.cn/javascript-revealing-module.html编辑:向云艳,审核员:逄增宝
Linux大全:
Linux系统大全: