Javascript實現單例模式,javascript實現
單例模式也稱作為單子模式,更多的也叫做單體模式。為軟體設計中較為簡單但是最為常用的一種設計模式。
單例模式的介紹:
在應用單例模式時,產生單例的類必須保證只有一個執行個體的存在,很多時候整個系統只需要擁有一個全域對象,才有利於協調系統整體的行為。比如在整個系統的設定檔中,配置資料有一個單例對象進行統一讀取和修改,其他對象需要配置資料的時候也統一通過該單例對象來擷取配置資料,這樣就可以簡化複雜環境下的組態管理。
單例模式的思路是:一個類能返回一個對象的引用(並且永遠是同一個)和一個獲得該執行個體的方法(靜態方法,通常使用 getInstance 名稱)。那麼當我們調用這個方法時,如果類持有的引用不為空白就返回該引用,否者就建立該類的執行個體,並且將執行個體引用賦值給該類保持的那個引用再返回。同時將該類的建構函式定義為私人方法,避免其他函數使用該建構函式來執行個體化對象,只通過該類的靜態方法來得到該類的唯一執行個體。
一般情況下,Javascript每次new一個對象就產生一個執行個體,執行個體指向不同的地址。就像如下:
(function(){function Person(name){this.name = name;}Person.prototype.work = function(){console.log(this.name + " is working");}var p1 = new Person("Darren");p1.work();var p2 = new Person("Jack");p2.work();}());
以上,每次new出一個Person對象都是不同的。
如何在Javascript中實現單例模式呢?
--在產生某各對象時先判斷是否存在。存在就不產生對象,不存在就產生對象。
(function(){var PersonSingleton = (function(){var instance;function init(){return {name: 'Anonymous',work: function(){console.log(this.name + ' working');}};}return {getInstance: function(){if(!instantiated){instantiated = init();}return instantiated;}}})();var p1 = PersonSingleton.getInstance();p1.work();var p2 = PersonSingleton.getInstance();p2.work();}());
以上,通過PsonSIngleton對象的getInstance方法得到的執行個體每次都是一樣的。
關於javascript單例模式的相關知識就給大介紹到這裡,希望對大家有所協助。
您可能感興趣的文章:
- javascript 單例模式示範代碼 javascript物件導向編程
- JavaScript的單例模式 (singleton in Javascript)
- js單例模式的兩種方案
- js單例模式詳解執行個體
- JavaScript設計模式之單例模式執行個體
- 深入理解JavaScript系列(25):設計模式之單例模式詳解
- JS模式之單例模式基本用法
- javascript單例模式的簡單實現方法