본문 바로가기
디자인패턴

Singleton

by 상국이 2022. 3. 26.
728x90

싱글톤

 > 인스턴스를 오직 하나만 만들어 제공

 > new 를 사용하지 않고 인스턴스를 생성해야함

 > Runtime 등...

  

ex)

- double checked locking

public class SingletonSample {

    private static volatile SingletonSample instance;

    private SingletonSample() {}    //private로 생성자를 만드는 경우 밖에서 instance를 생성할 수 없음

    public static SingletonSample getInstance(){    //해당 static 메서드를 사용해서 사용 가능
        if(instance == null){
            synchronized (SingletonSample.class){
                if(instance == null)
                    instance = new SingletonSample();
            }
        }
        return instance;
    }
}

 

- static inner 클래스 사용

public class SingletonSample {

    private SingletonSample() {}

    private static class SingletonSampleHolder{
        private static final SingletonSample INSTANCE = new SingletonSample();
    }

    public static SingletonSample getInstance(){
        return SingletonSampleHolder.INSTANCE;
    }
    
}

 

- enum 사용

public enum SingletonSample {

    INSTANCE;
    
}

 -> 리플렉션에 안전함

 

 

728x90

'디자인패턴' 카테고리의 다른 글

Factory Method  (0) 2022.04.25
인터페이스 메서드  (0) 2022.04.02

댓글