首頁  >  文章  >  web前端  >  js單例模式詳解實例_基礎知識

js單例模式詳解實例_基礎知識

WBOY
WBOY原創
2016-05-16 17:13:221360瀏覽

什麼是單例?

單例要求一個類別有且只有一個實例,提供一個全域的存取點。因此它要繞過常規的控制器,使其只能有一個實例,供使用者使用,而使用著不關心有幾個實例,因此這是設計者的責任

複製程式碼 程式碼如下:

In JavaScript, Singletons serve as a shared resource namespace whichsolate implementation code from gloth namespace whichs source namespace whichsolate implementation code from glodmentation namespace to gloas namespace 代碼a single point of access for functions.

在javascript中,單例被當作一個全域的命名空間,提供一個存取該物件的一個點。

使用場景

複製程式碼 代碼如下:


代碼如下:
practice, the Singleton pattern is useful when exactly one object is needed to coordinate others across a system.

單例比較適用於一個物件和其他系統進行互動。

類比

單例有點類似一個小組的小組長,在一段時間內只有一個小組長,有小組長來指定組員的工作,分配和協調和組員的工作。

實例1:這個是最簡單的單例,透過key,value的形式儲存屬性和方法

複製程式碼
程式碼如下:


var A = {
 🎜>   yy:4,
   B:function(el){

   },
   C:function(el){

   C:function(el){

   C:function(el){

){

   },
   E:function(el){
   }

}
}

}


複製程式碼

程式碼如下:

var mySingleton = (function (function (function)>

// Instance 儲存一個單例實例的參考
var instance;

function init() {

// Singleton

// 私有的方法與變數

function privateMethod(){

    console.log( "I am private" );
}

var privateVariable = "Im also private";

return {

  // 共同的方法與變數

  publicMethod: function () {

    console.log( "The public can see me!" );

  },

  publicProperty: "I am also public"
};

};

return {

// 如果實例不存在,那麼建立一個
getInstance: function () {

  if ( !instance ) {

    instance = init();

  }

  return instance;
}

};

})();

var singleA = mySingleton;var singleB = mySingleton;

console.log( singleA === singleB ); // true

複製程式碼 程式碼如下:

var SingletonTester = (function () {
  // options:包含單例配置選項的物件
  // 例如var options = { name: "test", pointX: 5};
  function Singleton( options )  {
    // 將選項設定為提供的選項
    // 若沒有提供則為空白物件
  的單例的一些屬性
    this.name = "SingletonTester";
    this.pointX = options.pointX || 6;
    this.point = options.D.D.options. / 我們的實例持有者
  var instance;
  // 靜態變數與方法的模擬
  var _static  = { 
    name:  它回傳
    // 單例物件的單例實例
    getInstance:  function( options ) {  
      instance = new Singleton( options );  
}  
        回傳實例;     
    }
  }; return  _static; });
// 記錄pointX 的輸出只是為了驗證它是否正確
// 輸出:5
console.log( singletonTest.pointX );


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn