03.Javascript設計模式之單例模式----Singleton

 

03.Javascript設計模式之單例模式----Singleton

本文主要探討Javascript中設計模式之一:單例模式(Singleton)

J2EE中的單例模式

衆所周知,單例模式的意思就是隻有一個實例。單例模式確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例。這個類稱爲單例類。在J2EE的設計模式中,單例模式有懶漢式和餓漢式之分,下面先看看這兩種單例模式的表現形式

  1. 懶漢式的單例模式

    Java Code
    public class Singleton {
        private Singleton {
        }
        private static Singleton _singleton = null;
        public static Singleton getInstance(){
            if(_singleton == null){
                _singleton = new Singleton();
            }
            return _singleton;
        }
    
        //Properties can be defined here!
        private String _name;
        public String getName(){
            return this._name;
        }
        public void setName(String _sName){
            this._name = _sName;
        }
    }
    

     

  2. 餓漢式的單例模式

    Java Code
    public class Singleton {
        private Singleton {
        }
        private static Singleton _singleton = new Singleton();
        public static Singleton getInstance(){
            return _singleton;
        }
    
        //Properties can be defined here!
        private String _name;
        public String getName(){
             return this._name;
        }              
        public void setName(String _sName){
            this._name = _sName;
        } 
    }
    

     

  3. 單例的獲取 針對如上兩種形式的單例模式,我們可以這樣獲得其實例:

    Singleton mySingleton = Singleton.getInstance();
    mySingleton.setName("趙先烈");
    System.out.println(mySingleton.getName()); //output:趙先烈
    

Javascript中的單例模式

在Javascript中,有很多種方式可以模擬單例模式,在這裏,我採用如下的方式來模擬,模擬之不當,還請指教

  1. 懶漢式的單例模式

    Javascript Code
    var Singleton = (function(){
        var _SingletonClass = function(){
            //Other code can be write here!
        };
        var _singleton = null;
        var _getInstance = function(){
            if(!_singleton){
                _singleton = new _SingletonClass();
            }
            return _singleton;
        };
    
        //Properties can be defined here!
        var _name = null;
        var _getName = function(){
            return _name;
        };
        var _setName = function(_sName){
            _name = _sName;
        };
    

    _SingletonClass.prototype = { getName: _getName, setName: _setName }; return { getInstance: _getInstance };
    })();

     

  2. 餓漢式的單例模式

    Javascript Code
    var Singleton = (function(){
        var _SingletonClass = function(){
            //Other code can be write here!
        };
        var _singleton = new _SingletonClass();
        var _getInstance = function(){
            return _singleton;
        };
    
        //Properties can be defined here!
        var _name = null;
        var _getName = function(){
            return _name;
        };
        var _setName = function(_sName){
            _name = _sName;
        }

    _SingletonClass.prototype = { getName: _getName, setName: _setName }; return { getInstance: _getInstance };
    })();
  3. 單例的獲取 針對如上的兩種形式,Javascript中的單例可以這樣獲得:

    var mySingleton = Singleton.getInstance();
    mySingleton.setName("趙先烈");
    alert(mySingleton.getName()); //output:趙先烈
    

總結

本文主要通過與Java對比的形式來模擬Javascript中的單例模式,是爲了讓人更明白在Javascript中,單例模式是什麼,如何實現。僅此而已。

 

發佈了16 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章