23種設計模式全面解析 -- 單例模式

單例(Singleton)模式

某個類只能生成一個實例,該類提供了一個全局訪問點供外部獲取該實例。vue

建立對象和管理單例的職責被分佈在兩個不一樣的方法中,這兩個方法組合起來才具備單例模式的威力。vuex

使用閉包實現:redux

const Singleton = function(name) {
  this.name = name;
}

Single.prototype.getName = function() {
 alert(this.name);
}

Singleton.getInatance = (function(name){
  let instance;
  return function(name) {
    if(!instance) {
       instance = new Singleton(name);
    }
    return instance;
  }
})()
var a = Singleton.getInstance('ConardLi');
var b = Singleton.getInatance('ConardLi');
console.log(a === b);

複製代碼

image.png

優勢

  • 劃分命名空間,減小全局變量
  • 加強模塊性,把本身的代碼組織在一個全局變量名下,放在單一位置,便於維護
  • 且只會實例化一次。簡化了代碼的調試和維護

缺點

  • 因爲單例模式提供的是一種單點訪問,因此它有可能致使模塊間的強耦合 從而不利於單元測試markdown

  • 沒法單獨測試一個調用了來自單例的方法的類,而只能把它與那個單例做爲一個單元一塊兒測試。閉包

場景

  • 定義命名空間和實現分支型方法
  • 登陸框
  • vuex 和 redux中的store
相關文章
相關標籤/搜索