싱글톤이란
싱글톤 패턴이란 특정 클래스의 인스턴스를 1개만 생성하는 것을 보장하는 디자인 패턴 중 하나이다. 이 패턴은 생성자로 매번 생성하더라도 인스턴스를 매번 생성하는 것이 아닌 최초로 생성한 동일한 인스턴스를 계속 사용하는 패턴입니다.
만약에 spring 백엔드 개발자라면 떼고 싶어도 뗄 수 없는 디자인 패턴이자 spring을 조금 더 특별하게 만들어주는 것이라고 할 수도 있다.
싱글톤의 장점
위에서 말했던 대로 처음에 생성한 동일한 인스턴스를 계속 사용하기 때문에 메모리 낭비를 예방할 수 있다.
예를 들어 유저가 1초에 10, 100번의 요청을 보낸다고 가정하면 10개, 100개의 인스턴스를 생성하는 것이 아닌 이미 생성된 인스턴스(static)를 호출하여 사용해 메모리 낭비를 방지할 수 있습니다.
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
public void singleton() {
System.out.println("Singleton");
}
}
여기서 코드를 보면 인스턴스를 static으로 선언하고 getInstance()를 사용해서 static으로 선언한 인스턴스를 반환할 수 있게 한다.
또한, private로 선언한 생성자가 중요한 점은 public으로 설정한다면 Singleton을 new로 생성할 수 있게 하는 것을 막을 수 있다.
싱글톤의 단점
결합도 증가
싱글톤 패턴은 전역에서 접근을 허용하기 때문에 해당 인스턴스를 의존한다면 결합도가 증가할 수 있다.
테스트 복잡성
싱글톤 패턴은 하나의 인스턴스만 가지고 공유하기 때문에 싱글톤을 의존하는 클래스는 테스트를 진행하기 어려울 수 있다.
private의 문제점
싱글톤의 특성상 생성자를 private로 만들기 때문에 자식 클래스를 생성할 수 없다. 즉 상속을 할 수 없는 것이다. 이것의 문제점이자 단점은 자바의 장점인 다형성을 활용하지 못한다는 단점이 있다.
'cs' 카테고리의 다른 글
[cs] J W T(Json Web Token) (0) | 2024.10.21 |
---|---|
[cs] Proxy란 (0) | 2024.09.01 |
[cs] HTTP? HTTPS? (0) | 2024.06.02 |
[cs]토폴로지(topology)란? (0) | 2024.05.17 |