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
'공부 > 디자인패턴' 카테고리의 다른 글
Bridge Pattern (브릿지 패턴) (0) | 2023.03.24 |
---|---|
Builder Pattern (빌더 패턴) (0) | 2023.03.23 |
디자인 패턴 (0) | 2023.02.03 |
Factory Method Pattern (팩토리 메소드 패턴) (0) | 2023.02.02 |
Abstract Factory Pattern (추상 팩토리 패턴) (0) | 2023.02.02 |