반응형

싱글톤 패턴 모듈

  • 하나의 인스턴스만 만들어 사용하는 패턴
var singleton = (function() {
  var instance;
  var a = 'hello';
  function initiate() {
    return {
      a: a,
      b: function() {
        alert(a);
      }
    };
  }
  
  return {
    getInstance: function() {
      if (!instance) {
        instance = initiate();
      }
      return instance;
    }
  }
})();

//사용
var first = singleton.getInstance();
var second = singleton.getInstance();

//first와 second는 동일한 인스턴스임
console.log(first === second); // true;

 

모듈+네임스페이스 패턴1

  • 하나의 인스턴스를 이름을 지정하여 사용하는 형태
var common = common || {};
common.module = (function() {
    var privateKey = 0;
    function privateMethod() {
        return privateKey++;
    }
 
    return {
        publicKey: privateKey,
        publicMethod: function() {
            return privateMethod();
        }
    }
})();
 
console.log(common.module.publicMethod()); // 0
console.log(common.module.publicMethod()); // 1

 

모듈+네임스페이스 패턴2

var common = common || {};
common = (function() {
    var publicFunc = {};
 
    var val1 = 10;
    publicFunc.setVal1 = function(v) {
      val1 = v;
    }
    publicFunc.getVal1 = function() {
      return val1;
    }
 
    publicFunc.sum = function(x, y) {
      return x + y;
    }
 
    return publicFunc;
})();

//사용
common.setVal1(15);
console.log(common.getVal1()); // 15
console.log(common.sum(3, 9)); // 12
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기