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

backdev0226님의 프로필 이미지
backdev0226

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

싱글톤 패턴 ★★★

싱글톤 패턴 강의에 나온 예시 질문

해결된 질문

작성

·

63

·

수정됨

0

안녕하세요 큰돌님 싱글톤 패턴 강의를 듣다가 예시 코드를 보고 궁금한 점이 있어서 질문 드립니다.

 

스크린샷 2024-10-13 오후 10.08.36.png

강의에서 보여주셨던 mongoDB의 커넥션 코드에서 싱글톤 패턴은 DB.instance가 존재하면, 기존의 DB.instance를 반환함으로써 인스턴스 생성에 대한 비용을 절감하는 것이라고 이해하였습니다.

그런데 여기에서 connect()함수의 this.instance는 인스턴스 내부에 instance라는 속성이 없기 때문에 undefined가 되므로 DB.instance를 반환해야 하는게 아닌지 질문드립니다.

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

그런데 여기에서 connect()함수의 this.instance는 인스턴스 내부에 instance라는 속성이 없기 때문에 undefined가 되므로 DB.instance를 반환해야 하는게 아닌지 질문드립니다.

-> 처음에 DB클래스기반 객체 생성시 -> 생성자함수가 발동됨 -> 그 이후 connect() 함수 호출시 -> 반환하기 때문에 무조건 값이 있게 됩니다.



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


1

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

싱글톤 패턴을 이용한 예제 코드에 대한 질문 감사합니다. 싱글톤 패턴은 단일 인스턴스의 생성을 보장하는 디자인 패턴으로, 주로 데이터베이스 연결과 같이 리소스 소모가 큰 작업이 반복되지 않도록 합니다.

질문하신 내용에 대해 설명드리면, 싱글톤 패턴에서 this.instanceundefined가 아닌 이유는 생성자 내에서 인스턴스를 한번만 생성하고 저장해 두었기 때문입니다.

  • 클래스 내부의 this: this 키워드는 생성된 해당 인스턴스 자체를 나타냅니다. 따라서 this.instance는 생성된 특정 인스턴스의 속성을 참조하게 됩니다.

  • 새로운 인스턴스 생성 방지: 처음 생성된 인스턴스를 매번 반환하므로 이후의 호출에서는 새로운 인스턴스를 만들지 않고 기존의 인스턴스를 재사용합니다.

이에 대한 구체적인 설명과 예제를 싱글톤 패턴에서 동시에 다중요청이 들어오는 경우을 통해 확인하실 수 있습니다. 이 링크에서 싱글톤 패턴의 멀티스레드 환경에서의 처리를 다루고 있는 내용을 참조하실 수 있을 것입니다.

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

backdev0226님의 프로필 이미지
backdev0226

작성한 질문수

질문하기