반응형
다음과 같이 싱글톤을 구현해야 불필요하게 인스턴스가 생성되는 것을 막을 수 있다. static 변수가 초기화되는 시점은 클래스명이 명시되었을 때 이므로 getInstance함수를 호출할 때 인스턴스가 초기화 된다.
public class Logger {
// 다른 사람은 아무도 이 클래스를 생성할 수 없도록 함
private Logger(){}
// 내부 클래스가 로딩될 때 초기화도 함께 진행됨
// getInstance()에서 참조하기 전까지는 로딩되지 않음
private static class LoggerHolder{
public static final Logger instance = new Logger();
}
public static Logger getInstance(){
return LoggerHolder.instance;
}
// 콘솔에 문자열 로그 출력
public void log(String msg){
System.out.println(System.currentTimeMillis() + ": " + msg);
}
public static void main(String[] args) {
Logger.getInstance().log(": 지연 초기화");
}
}
출처: https://jlblog.me/183 [JLBlog]
반응형