JS 设计模式 四(单例)

单例

单例是一个全局变量,使用单例可以更好的控制全局变量,还可以利用分支技术来封装浏览器之间的差异。网页中使用全局变量由于可以被重写风险很大。所以使用单例会更好的控制全局变量。

懒加载

单例模式多数都是在加载脚本的时候被创建出来。不过对于一些使用方式单例适合在用到的时候被加载,所以需要一个可以懒加载的单例。

分支

是一种区分运行环境差异的技术,更加有效的针对加载的环境来定制代码,达到更好的灵活性。

代码

var os = require("os");
Singleton = (function () {
  var uniqueInstance; // 单例实体
  constructor = function () { // 单例初始化
    return function Singleton () {
      var count = 10;
      function initCount(){
        count = 10;
      }
      this.getCount = function () {
        return count;
      }
      this.setCount = function (value) {
        count = value;
      };
      this.init=function(){
        initCount();
      }
    };
  }();

  return {
    getInstance: function () {
      if (!uniqueInstance) { // 判断是否初始化过
        uniqueInstance = new constructor();
      }
      return  (os.type()==='Windows_NT')?uniqueInstance:undefined;//单例分支使单例有更高的兼容性
    }
  }
})();
var S=Singleton .getInstance();//懒加载,在这里开始加载和创建实例。
console.log(S.count);
console.log(S.getCount());
S.setCount(550);
console.log(S.getCount());
//S.initCount();
S.init();
console.log(S.getCount());

总结

单例主要在于代码的整洁性,是全局变量变得可控,使用懒加载可以减少不必要的内存消耗。分支提高不用环境的兼容性,只需判断一次环境而不用在每次使用都判断环境。

    原文作者:设计模式
    原文地址: https://segmentfault.com/a/1190000005085603
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞