js設計模式 第八章 單例模式
阿新 • • 發佈:2018-12-03
單例模式:又稱單體模式,是隻允許例項化一次的物件類。有時也用一個物件來規劃一個名稱空間,井井有條地管理物件上的屬性和方法 。
名稱空間的管理員
防止變數或方法重複
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);