본문 바로가기
프론트엔드/TypeScript

class - singleton 패턴

by step 1 2021. 6. 21.
반응형

사용자가 직접 접근이 불가능하고 Class를 통해서만 접근가능하도록 설계

 

예제

TS 파일

class ClassName {

  private static instance: ClassName | null = null;

  public static getInstance(): ClassName{
    
    // Classname으로 부터 만든 object가 없으면 만든다.
    if (ClassName.instance === null){
      // class 내부이기 때문에 호출 가능
      ClassName.instance = new ClassName();
    }
   // ClassName으로 부터 만든 object가 있으면 그걸 리턴
    return ClassName.instance;
  }
  // new로 생성하지 못하도록 한다.
  private constructor() { };

}

const a12 = ClassName.getInstance();
const b12 = ClassName.getInstance();

// 서로 같은지 비교
console.log(a12 === b12);

 

컴파일된 JS 파일

"use strict";
class ClassName {
    // new로 생성하지 못하도록 한다.
    constructor() { }
    static getInstance() {
        // Classname으로 부터 만든 object가 없으면 만든다.
        if (ClassName.instance === null) {
            // class 내부이기 때문에 호출 가능
            ClassName.instance = new ClassName();
        }
        // ClassName으로 부터 만든 object가 있으면 그걸 리턴
        return ClassName.instance;
    }
    ;
}
ClassName.instance = null;
const a12 = ClassName.getInstance();
const b12 = ClassName.getInstance();
// 서로 같은지 비교
console.log(a12 === b12);

 

결과 확인

반응형

'프론트엔드 > TypeScript' 카테고리의 다른 글

Abstract Class  (0) 2021.06.21
Class - 상속  (0) 2021.06.21
class - Static Properties 와 Method  (0) 2021.06.21
class - index Signatures  (0) 2021.06.21
class - readonly 속성  (0) 2021.06.21