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

김진호님의 프로필 이미지
김진호

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Singleton 패턴

싱글톤패턴에서 질문

작성

·

470

0

18:25쯤에 public static Managers instance {get{init(); return s_instance;}}로 함수에서 프로퍼티로 바꿔서 ()없이 가져오기 편하게 바꾸셧는데 이떄 {}안에 init();을 넣은 이유는 안넣으면 return s_instance;할때 오류가나서 그런가요? 이유를 알고싶어요

답변 1

0

init() 메소드는 인스턴스 생성 시 초기화를 담당하는 메소드로 보통 생성자(constructor)에서 수행합니다. 하지만, 싱글톤 패턴에서는 생성자를 private으로 선언하므로 초기화 코드를 다른 방식으로 처리해야 합니다.

그래서 instance 프로퍼티의 getter 메소드에서 초기화 코드를 호출하는 것입니다. 만약 init()을 호출하지 않고, return s_instance;만 작성한다면, s_instance가 아직 초기화되지 않았을 때 null을 반환하기 때문에 오류가 발생할 수 있습니다.

따라서 init() 메소드를 호출하여 s_instance를 초기화하고, 초기화된 s_instance를 반환하도록 작성하는 것이 좋습니다. 이렇게 하면 s_instance를 호출할 때마다 초기화 코드를 작성할 필요 없이, 항상 초기화된 인스턴스를 가져올 수 있습니다.

김진호님의 프로필 이미지
김진호

작성한 질문수

질문하기