• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    미해결

기선님! 싱글톤 패턴을 복습하며 궁금한게 생겼습니다

21.11.23 10:13 작성 조회수 155

0

자바에서 enum을 사용하지 않고 싱글톤 패턴을 구현하는 방법에 좋은 예로, inner static class 를 사용하는 방법에 대해 정리하려고 하는데요..

Q1. static(정적) class 에 특징을 살려 싱글톤 패턴을 구현한 건가요? (inner "static" class 로 구현하는 핵심적인 이유에 대해 궁금함)

Q2. inner class 에서 eager loading 으로 생성된 인스턴스를 outer class의 getInstance() 메소드로 일관되게 반환함으로써 싱글톤 패턴을 실현시키는 건가요?

답변 1

답변을 작성해보세요.

1

안녕하세요. 좋은 질물 감사합니다.

Q1. getInstance() 메소드에서 Settings4Holder.INSTANCE 이런식으로 참조하려면 static을 사용해야 되요. 한번 static을 빼고 컴파일을 시도해 보시면 좋을 것 같습니다.

Q2. inner 클래스가 로딩되는 시점도 해당 클래스가 처음으로 사용되는 시점인데, getInstanace()가 처음으로 호출됐을 때 로딩 될테니 엄밀히는 eager loading은 아니지만, 홀더가 로딩 되는 시점에 static 필드가 만들어 지면서 싱글톤 패턴이 요구하는 단일 인스턴스를 보장할 수 있게 됩니다.

감사합니다.