Illie
[JAVA] 싱글톤 본문
서론
클래스 인스턴스가 딱 하나만 생성되는 것을 보장하는 디자인 패턴
요청이 올 때마다 객체를 생성하게 된다면, 메모리 낭비가 매우 클 것이기 때문에
이를 방지하기 위해 객체를 미리 생성해두고 이를 참조한다
본론
싱글톤 패턴을 적용한 코드는 다음과 같다.
public class SingletonService {
// static 영역에 객체를 딱 하나만 생성
private static final SingletonService instance = new SingletonService();
// 객체 인스턴스가 필요하다면 static 메서드를 통해서만 조회하도록 허용
public static SingletonService getInstance() {
return instance;
}
// 외부에서 new 키워드로 객체 생성 막음
private SingletonService() {}
public void logic() {
System.out.println("싱글톤 객체 로직 호출");
}
}
하나 만들어놓고 참조만 하면되니 더할나위 없이 좋은 코드가 아닌가 생각했지만,
자식 클래스를 만들기도 어렵고 이것저것 제약이 많아
유연성이 떨어지고 그래서 안티패턴이라 불린다고 한다
또, stateless하게 설계를 해야하는데
이를 지키지 않았을 경우 무시무시한 사이드 이펙트가 발생할 수 있다
자바 스프링에서는 스프링 컨테이너라는 개념이 있는데,
Bean 등록을 통해 객체 인스턴스를 싱글톤으로 관리하는 곳이 있다.
기존 싱글톤 패턴에서 야기될 수 있는 단점을 해결하면서 싱글톤을 유지한다고 한다...!
결론
디자인 패턴은 '바퀴를 다시 발명하지 않는' 접근법을 제공한다고 한다
신뢰할 수 있는 시스템을 구축하기 위해선 필수라고 한다
더 열심히 배워야겠다
'JAVA' 카테고리의 다른 글
[JAVA] try-with-resources (0) | 2024.10.13 |
---|---|
[JAVA] Executor 전략 (0) | 2024.10.12 |
Comments