싱글톤 패턴

Gwonyeong·2023년 3월 19일
0

cs-note

목록 보기
1/8
  • 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴.
  • 만들어진 인스턴스로 로직을 만들고 데이터베이스 연결 모듈에 많이 사용됨.
  • 하나의 인스턴스를 만들어 놓고 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 사용하는 비용이 거의 없음.
  • 하지만 의존성이 높아짐.
💡
// Singleton.js

let instance = null;

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

    return instance;
  }

  // 싱글톤 객체의 기능 구현
  sayHello() {
    console.log("Hello, World!");
  }
}

module.exports = Singleton;

서버가 실행될 때 인스턴스를 실행해두고 그 인스턴스를 지속적으로 사용한다 라고 이해하면 되겠지?

  • 네, 맞습니다. 싱글톤 패턴은 어떤 클래스의 인스턴스가 한 번만 생성되도록 보장하고, 이후에는 그 인스턴스를 지속적으로 사용하도록 합니다. 이를 통해, 여러 개의 객체를 생성하고 관리하는 대신 하나의 인스턴스만을 생성하여 사용함으로써 메모리 사용량을 줄이고 성능을 향상시킬 수 있습니다.
  • Node.js에서도 이러한 싱글톤 패턴을 구현할 수 있으며, 서버가 실행될 때 인스턴스를 미리 생성해두고, 이후 요청이 들어올 때마다 해당 인스턴스를 사용하는 방식으로 동작합니다. 이를 통해, 서버의 성능을 향상시키고 메모리 사용량을 최적화할 수 있습니다.

단점

  • TDD를 할 때 걸림돌이 됨. TDD는 단위 테스트를 주로 하는데 단위 테스트는 테스트가 서로 독립적이어야 하며 테스트를 어떤 순서로든 실행할 수 있어야함.
    • 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로 각 테스트마다 독립적인 인스턴스를 만들기가 어려움.
  • 의존성 주입
    • 모듈간의 결합을 강하게 만든다는 단점.
    • 결합도 💡
      [노션](https://olive-barber-595.notion.site/aba9f4d8676a4e9da7959d1185254b90)
profile
부동의 첫사랑

0개의 댓글