JS 設計模式 四(單例)

單例

單例是一個全局變量,使用單例能夠更好的控制全局變量,還能夠利用分支技術來封裝瀏覽器之間的差別。網頁中使用全局變量因爲能夠被重寫風險很大。因此使用單例會更好的控制全局變量。瀏覽器

懶加載

單例模式多數都是在加載腳本的時候被建立出來。不過對於一些使用方式單例適合在用到的時候被加載,因此須要一個能夠懶加載的單例。ui

分支

是一種區分運行環境差別的技術,更加有效的針對加載的環境來定製代碼,達到更好的靈活性。this

代碼

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());

總結

單例主要在於代碼的整潔性,是全局變量變得可控,使用懶加載能夠減小沒必要要的內存消耗。分支提升不用環境的兼容性,只需判斷一次環境而不用在每次使用都判斷環境。code

相關文章
相關標籤/搜索