작성
·
226
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 필드가 만들어 지면서 싱글톤 패턴이 요구하는 단일 인스턴스를 보장할 수 있게 됩니다.
감사합니다.