싱글톤 패턴(Singleton Pattern)은 바탕이 되는 하나의 클래스에 딱 하나의 인스턴스를 생성한다.
생성된 인스턴스 하나를 가지고 다른 모듈들이 공유하며 사용한다.
인스턴스를 여러 번 생성할 때 들어가는 비용을 줄일 수 있다.
그러나, 의존성이 높아지는 단점이 존재한다.
(이러한 단점은 '의존성 주입' 을 통해 해결할 수 있다.)
package singleton;
class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class SingletonTest {
public static void main(String[] args) {
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
System.out.println(singleton1);
System.out.println(singleton2);
}
}
바탕이 되는 클래스 Singleton 이 있다.
이 클래스에서 private static 으로 인스턴스 하나(= instance) 를 생성해준다.
이 인스턴스(= instance) 는 추후에 여러 클래스에서 공유되며 사용된다.
그리고, 중요한 건 private 으로 기본 생성자를 하나 만들어준다.
static 으로 된 getInstance 도 하나 만들어주고, if 문을 이용하여 instance 값이 null 일 경우에는 새로운 객체를 생성해 넣어주고, null 이 아닐 경우에는 그대로 instance 를 반환해준다.
이제 public class 로 test 를 해볼 것이다.
여기서 singleton1 과 singleton2 이라는 이름으로 객체 2개를 생성해준다.
두 객체를 출력해보면, 동일한 하나의 객체를 공유하고 있음을 알 수 있다.
※ 이처럼, 하나의 인스턴스를 바탕으로 여러 모듈에서 공유를 하고 싶다면, 싱글톤 패턴을 적극 이용하면 된다.
'Develop > Design Pattern' 카테고리의 다른 글
옵저버 패턴이란? (0) | 2022.08.17 |
---|---|
팩토리 패턴이란? (0) | 2022.07.27 |
디자인 패턴이란? (0) | 2022.07.25 |