본문으로 바로가기

싱글톤 지연 초기화 예제

category Programming/Java 2020. 8. 28. 15:03
    반응형

    다음과 같이 싱글톤을 구현해야 불필요하게 인스턴스가 생성되는 것을 막을 수 있다. 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]
    반응형