해결된 질문
작성
·
138
·
수정됨
0
DEEP DIVE : 싱글톤 패턴을 구현하는 7가지 방법 #2 ★★☆
챕터에서 5. 정적 멤버와 Lazy Holder(중첩 클래스)를 이용한 방법으로 아래 코드를 설명해주셨는데요
public class Singleton {
private static class singleInstanceHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return singleInstanceHolder.INSTANCE;
}
}
생성자를 private으로 막지 않으면 싱글턴 인스턴스를 만든 이유가 없지 않나요?
싱글턴이 필요하지 않을 때는 생성자 호출로 생성한 후, 더 이상 쓰지 않을 때 GC가 회수하게 하다, 싱글턴이 필요한 순간에 생성하는 건가요?
public class Main {
public static void main(String[] args) {
Singleton instance = new Singleton(); // 싱글턴이 필요하지 않으면 직접 호출하기
Singleton singleton1 = Singleton.getInstance(); // 싱글턴이 필요한 순간에 싱글턴 객체 생성하기?
}
}
답변 1
0
안녕하세요 안농님 ㅎㅎ
코드를 private으로 수정해라 라는 말씀처럼 들리는데요.
class Singleton {
private static class singleInstanceHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return singleInstanceHolder.INSTANCE;
}
}
혹시 이 코드가 어떻게 되어야 한다고 생각하시나요?
감사합니다.
생성자를 private으로 막으면 Singleton 으로만 동작하도록 강제하여, 원래 코드 의도에 더 부합할 것 같습니다.