본문 바로가기
공부/디자인패턴

Singleton Pattern (싱글톤 패턴)

by 개발자5 2023. 2. 3.
Singleton Pattern (싱글톤 패턴)

Singleton Pattern은 유일하게 하나의 인스턴스만 존재하도록 보장하며, 생성된 인스턴스는 전역변수를 참조하는 것 처럼 어디서든 참조할 수 있다.

 

 

Implementations

Coin 인스턴스는 private static으로 선언하고, 외부에서는 getInstance()를 통해서만 사용할 수 있도록 한다.

public class Coin {

    private static final int ADD_MORE_COIN = 10;
    private int coin;
    private static Coin instance = new Coin(); // eagerly loads the singleton

    private Coin() {
        // private to prevent anyone else from instantiating
    }

    public static Coin getInstance() {
        return instance;
    }

    public int getCoin() {
        return coin;
    }

    public void addMoreCoin() {
        coin += ADD_MORE_COIN;
    }

    public void deductCoin() {
        coin--;
    }
}

이 때 lazy initialization으로 구현할 수도 있는데, 아래와 같이 처음부터 인스턴스를 생성하지 않고, 최초 접근시에 생성하도록 구현할 수도 있다.

public class Singleton {

    private static volatile Singleton instance = null;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized(Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }

        return instance;
    }
}

 

 

References