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 |
댓글