Moe's Tech Blog

[디자인 페턴] 싱글톤에 관하여 본문

Software Design Pattern/Notes

[디자인 페턴] 싱글톤에 관하여

moe12825 2022. 4. 11. 22:52

싱글톤 다이어그램 (출저: Free Code Camp, Navdeep Singh)

 

class Singleton {
  static instance;

  constructor() {
    if (!Singleton.instance) {
      Singleton.instance = this;
    }

    return Singleton.instance;
  }
}

싱글톤 패턴을 사용하는 이유

  1. 메모리 절약
    • 하나의 클래스 인스턴스로 수행하기 때문에 일반 클래스보다 사용되는 메모리가 적다 
  2. 클래스간의 데이터 공유가 쉽다

싱글톤 패턴이 유용할때

  1. 병렬 프로그래밍 - 실행과 함께 함수의 작업 진행상태를 보고싶을때

싱글톤 패턴의 문제점

  1. 테스트 하기 어렵다
    • 격리된 상황에서 수행되려면 매번 인스턴스의 상태를 초기화 시켜주어야 한다.
  2. 조심스럽게 다루어야 한다
    • 1번, 3번 이유와 비슷하다
    • 반복적으로 사용할때 안에 저장되어있는 정보가 원치 않게 쉽게 변질 될 수 있다
  3. 여러곳에서 동시다발로 사용할땐 race condition에 취약해 진다
    • 여러곳에서 동시다발로 사용하다 에러가 났을땐 debugging하는데 머리가 아퍼진다

출저