js設計模式單例模式

單例模式:又稱單體模式,是隻允許實例化一次的對象類。有時也用一個對象來規劃一個命名空間,井井有條地管理對象上的屬性和方法 。

命名空間的管理員

防止變量或方法重複

var ming={
    g:function(id){
        return document.getElementById(id);
    },
    css:function(id,key,value){
        this.g(id).style[key]=value;
    }
};

模塊分明

baidu.dom.addClass 
baidu.dom.append 
baidu.event.stopPropagation 
baidu.event.preventDefault 
baidu.event.trim 
baidu.string.encodeHTML

無法更改的靜態變量

js是沒有static這類關鍵字,所以定義任何變量理論上do都可更改,所以在js中實現創建靜態變量變得很重要。

把變量定義在函數內部,通過特權方法訪問,不提供賦值變量的方法,只提供獲取變量的方法

var Conf=(function(){
    //私有變量
    var conf={
        MAX_NUM:100,
        MIN_NUM:1,
        COUNT:1000
    };
    //返回取值器對象
    return {
        //取值器方法
        get:function(name){
            return conf[name]? conf[name] : null;
        }
    };
})();

var count=Conf.get('COUNT');
console.log(count);

惰性單例

有些時候對於單例對象需要延遲創建,所以在單例中還存在一種延遲創建的形式。

//惰性載入單例
var LazySingle=(function(){
    //單例實例引用
    var _instance=null;
    //單例
    function Single(){
        //這裏定義私有屬性和方法
        return {
            publicMethod:function(){},
            publicProperty:'1.0'
        };
    }
    //獲取單例對象接口
    return function(){
        //如果爲創建單例將創建單例
        if(!_instance){
            _instance=Single();
        }
        return _instance;
    };
})();

console.log(LazySingle().publicProperty);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章