Javascript設計模式Revealing Module 揭示模式單例模式詳解
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 揭示模式單例模式的詳細內容
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2913545/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式之單例模式詳解設計模式單例
- javascript設計模式一: 單例模式JavaScript設計模式單例
- Javascript 設計模式之單例模式JavaScript設計模式單例
- Javascript設計模式之單例模式JavaScript設計模式單例
- Javascript設計模式(三)單例模式JavaScript設計模式單例
- JavaScript設計模式初探--單例設計模式JavaScript設計模式單例
- 理解設計模式之單例模式(Javascript)設計模式單例JavaScript
- Android 常用設計模式(二) -- 單例模式(詳解)Android設計模式單例
- javascript設計模式單例模式簡單介紹JavaScript設計模式單例
- JavaScript設計模式經典之單例模式JavaScript設計模式單例
- JavaScript設計模式學習之單例模式JavaScript設計模式單例
- 設計模式-單例模式設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式 —— 單例模式設計模式單例
- 設計模式(單例模式)設計模式單例
- 設計模式——單例模式設計模式單例
- 設計模式--單例模式設計模式單例
- 設計模式 單例模式設計模式單例
- 設計模式-單例模式、多例模式設計模式單例
- [設計模式]單例設計模式設計模式單例
- Javascript設計模式詳解JavaScript設計模式
- 從JavaScript學習設計模式-02單例模式JavaScript設計模式單例
- 設計模式-單例模式,觀察者模式設計模式單例
- 設計模式一(單例模式)設計模式單例
- 設計模式之☞單例模式設計模式單例
- Java設計模式–單例模式Java設計模式單例
- Java設計模式——單例模式Java設計模式單例
- Java設計模式--單例模式Java設計模式單例
- js設計模式--單例模式JS設計模式單例
- Java設計模式 | 單例模式Java設計模式單例
- 設計模式之單例模式設計模式單例
- Java設計模式【單例模式】Java設計模式單例
- 設計模式之---單例模式設計模式單例
- 設計模式(二)——單例模式設計模式單例
- PHP設計模式_單例模式PHP設計模式單例
- 設計模式系列-單例模式設計模式單例
- 設計模式(一)_單例模式設計模式單例
- 設計模式1——單例模式設計模式單例