본문 바로가기
디자인패턴

[디자인패턴] 싱글턴(Singleton)

728x90
반응형

작동원리

싱글턴은 오직 하나의 인스턴스만 생성되는것을 보장해주는 디자인 패턴입니다. 객체의 생성자는 객체 내부에서만 호출 가능하도록 제한해줍니다. 객체에 접근할 때는 최초 1회만 객체가 생성되도록 해주고, 그 이후의 접근때는 해당 객체를 반환해 줍니다.  

public class Singleton
{
    protected static Singleton instance = null;

    public static Singleton Instance
    {
            if (instance == null) instance = new Singleton();
            return instance;
    }
}

장점

객체의 갯수를 단 1개로 보장하여 주기 때문에 메모리를 아낄 수 있습니다. 또한, 전역변수 처럼 어디서든 데이터에 접근이 가능하기 때문에 데이터 공유가 보다 용이합니다.

 

단점

1. 멀티스레드 환경에서는 객체의 유일성이 보장되지 않을 수 도있습니다. 인스턴스가 null일 경우 생성자를 호출하게 되는데, 이때 두 개 이상의 스레드가 동시에 접근한다면 둘다 생성자를 호출할 수 있기 때문입니다. 다만, 이 단점은 동기화를 통해서 해결이 가능합니다.

2. 여러 인스턴스에게 자원이 공유되기 때문에 경쟁상태에 놓이기 쉽습니다.

3. 과도한 커플링을 야기할 수 있습니다.

 

반응형