Programming/Node.js
싱글톤 (Singleton) 패턴
HemMu
2022. 10. 21. 18:00
싱글톤이란 클래스의 인스턴스가 단 하나만 생성되는 것을 보장하는 디자인 패턴이다.
그렇기 때문에 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다.
public class SingletonService {
private static final SingletonService instance = new SingletonService();
public static SingletonService getInstance() {
return instance;
}
private SingletonService(){
}
public void logic(){
System.out.println("싱글톤 객체 호출");
}
}
해당 예시는 private 생성자로 외부에서 사용하지 못하도록 막았다.
객체 인스턴스가 필요하면 getInstance() 메소드를 통해서만 조회 가능하다.
void singletonServiceTest(){
SingletonService singletonService1 = SingletonService.getInstance();
SingletonService singletonService2 = SingletonService.getInstance();
System.out.println("singletonService1 = " + singletonService1);
System.out.println("singletonService2 = " + singletonService22);
//singletonService1 == singletonService2 Test
Assertions.assertThat(singletonService1).isSameAs(singletonService2);
}
싱글톤을 적용하면 요청이 올 때마다 객체를 생성하지 않고 미리 만들어진 객체를 공유해서 사용한다.
싱글톤을 사용하지 않으면 똑같은 요청마다 새로운 객체를 생성하므로 ex) 1000개의 요청시 1000개의 객체생성
메모리 낭비가 심하다.