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
相关文章
相关标签/搜索