cs

[cs] 싱글톤의 장점과 단점

엄지성 2024. 9. 23. 00:06

싱글톤이란

싱글톤 패턴이란 특정 클래스의 인스턴스를 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