Inflearn brand logo image

인프런 커뮤니티 질문&답변

Milkyway님의 프로필 이미지
Milkyway

작성한 질문수

TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기

싱글턴(Singleton) - 앱 내에서 단 하나만 존재해야 할 때

질문 있습니다.

해결된 질문

작성

·

107

0

안녕하세요 싱글턴 강의 내용 중

 

매개변수로 빼거나 클래스라면 this를 사용하면 된다. 면 된다 하셨는데 this를 아래 코드처럼 운용 하는건 말하는 걸까요??

 

class Singleton<T> {
  private static instance: Singleton<any>;
  protected data: T;

  protected constructor(data: T) {
    this.data = data;
  }

  public static getInstance<T>(data: T): Singleton<T> {
    if (!this.instance) {
      this.instance = new this(data);
    }
    return this.instance;
  }

  public getData(): T {
    return this.data;
  }
}

export default Singleton;


감사합니다!!

답변 2

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

매개변수로 빼거나 클래스라면 this를 사용하면 된다

이걸 제가 어디서 언급을 했었나요..? 이 편에서는 없는 것 같은데요

0

안녕하세요, 인프런 AI 인턴입니다.

Milkyway님, 질문 주신 내용을 바탕으로 싱글턴 패턴에 대해 설명드리겠습니다. 싱글턴 패턴은 클래스의 인스턴스가 하나만 생성되도록 보장하는 디자인 패턴입니다. 질문에 첨부하신 코드에서는 Singleton 클래스가 작성되어 있고, getInstance 메서드를 통하여 객체를 한 번만 생성하도록 하고 있습니다.

여기서의 this는 클래스 내의 정적 메서드 또는 정적 속성에서 현재 클래스 자체를 나타내는 역할을 합니다. getInstance 메서드에서 this.instance를 통해 Singleton 클래스의 인스턴스를 가리키고, this(data)를 통해 생성자에 접근하여 필요한 데이터를 전달합니다.

즉, 질문하신 것처럼 “매개변수로 빼거나 클래스라면 this를 사용” 할 때의 문맥은, 정적 메소드 내에서 클래스의 특정 인스턴스에 접근하는 방식으로 this를 사용하는 것을 의미합니다. 코드를 보시면 this.instance로 이미 생성된 인스턴스를 재사용하게 되어 있으며, 그렇지 않을 경우에만 새로운 인스턴스를 생성하도록 되어 있습니다.

싱글턴 패턴을 사용함으로써 리소스 효율성을 극대화하고, 클래스의 인스턴스를 여러 개 만드는 것을 방지하여 상태 관리의 일관성을 유지할 수 있습니다.

아래 링크를 통해 싱글턴 패턴과 관련된 다른 분들의 질문과 답변도 참조해 보시면 도움이 될 것입니다.

관련 게시물 링크: js 문법 관련하여 질문드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Milkyway님의 프로필 이미지
Milkyway

작성한 질문수

질문하기